我有产品列表,希望找到特定成本范围内的产品计数,如,如果productList有10个产品,成本在1-10之间,50在11-100之间,100在101-1000之间,那么它应该返回如下图,
class Product {
long id;
long cost;
String name;
//getters setters
}
productList.stream().collect(Collectors.toMap(//logic to get map));
您可以为range创建函数
,并使用collectors.groupingby
,如下所示,
Map<String, Long> countByCost = productList.stream()
.collect(Collectors.groupingBy(costRange, TreeMap::new, Collectors.counting()));
Function<Product, String> costRange = ele -> {
if(ele.cost >= 1 && ele.cost < 11)
return "1-10";
if(ele.cost >= 11 && ele.cost < 101)
return "11-100";
if(ele.cost >= 101 && ele.cost < 1001)
return "101-1000";
return "others";
};
更新:Holger建议的更优雅的成本范围功能,
Function<Product, String> costRange = ele -> {
if(ele.cost < 1) return "others";
long i = ele.cost == 1? 1: (long)Math.pow(10, Math.floor(Math.log10(ele.cost-1)));
return (i|1)+"-"+(i*10); };
问题内容: 假设我有一张Java地图,看起来像这样: 如果键按排序顺序(使用树图或链接哈希图)。现在,如果我尝试获取> = 39和<41的值。那么我应该获取字符串“ 39至41”。如何有效地执行此操作? 问题答案: 看起来您想要的不止一个; 你想要一个!具体来说,您可以使用该操作。 这是一个例子: 需要注意的是也有,,和也,而不是操作以及它返回而不只是。
问题内容: 我有一个带有id列和成千上万行的表。我获得了1000个ID的列表,用于对照其他表格数据进行检查。 ID没有按顺序存储。 ID列表也不按顺序排列。 当我使用这些ID选择表格数据时,仅返回990个结果,这意味着自该列表产生以来,其中10个结果已更改/被删除。如何从该数据范围中找到10个缺失值?这是我目前正在做的事情: 返回990个结果。我可以做类似的事情吗? 编辑:抱歉造成混乱。我应该提到
我是Elasticsearch的新手,所以我怀疑: 我在弹性搜索中插入了大量数据。我插入的数据包含每个科目的分数属性,是否可以编写Elasticsearch查询来查找分数在输入范围内的学生人数 例子: 假设以表格方式存在于ES中的数据,是否有可能 1.找到计算机成绩超过50分的学生名单。 2、查找两门科目得分均超过60分的学生名单。
问题内容: 有没有办法获取所有当前在javascript范围内的变量? 问题答案: 否。“范围内”变量由“作用域链”确定,该变量无法通过编程方式访问。 有关详细信息(很多),请查看ECMAScript(JavaScript)规范。这是指向官方页面的链接,您可以在其中下载规范规范(PDF),而这是指向官方的可链接HTML版本的链接。 根据您对Camsoft的评论进行更新 事件函数作用 域中 的变量取
我的方法是生成所有素数直到(埃拉托色尼筛),并检查给定范围内的每个数是否可被素数的平方整除。这些数字的计数从范围的长度中减去,以给出平方自由数。 但是这种方法在复杂度上超时了,请建议一些其他的方法
有没有办法为一系列Int创建IntStream? 就像如果我想流式传输值1到1000,我可以调用一些静态工厂来流式传输该范围?