java-stream相关内容
如何计算 Map 的加权平均值,其中 Integer 值是要平均的 Double 值的权重.例如:地图有以下元素: (0.7, 100)//值为 0.7,权重为 100 (0.5, 200) (0.3, 300) (0.0, 400) 我希望使用 Java 8 流应用以下公式,但不确定如何同时计算分子和分母并同时保留它.这里如何使用reduction? 解决方案 您可以为
..
我有以下 Java6 和 Java8 代码: Listlst1 =//ObjectType1 对象的列表列出lst2 =//ObjectType1 对象的列表,大小与 lst1 相同列表lst3 = new ArrayLis(lst1.size());for(int i=0; i Java8 中有什么方法可以使用 Lambda 以更简洁的方
..
这是我对 Stream 框架: 某事创建了一个源 流 实现负责提供一个BaseStream#parallel() 方法,该方法又返回一个可以并行运行其操作的 Stream. 虽然有人已经找到了使用方法一个具有 Stream 框架并行执行的自定义线程池,我在 Java 8 API 中找不到任何提及默认 Java 8 并行 Stream 实现将使用 ForkJoinPool#common
..
使用 Java 8 Stream API,我想注册一个“完成挂钩",如下所示: 流流 = Stream.of("a", "b", "c");//我无法控制的其他过滤器/映射stream.onComplete((Completion c) -> {//这就是我想做的:关闭资源();//这也可能有用:可选异常 = c.exception();exception.ifPresent(e ->
..
我想实现这样的目标: items.stream().filter(s->s.contains("B")).forEach(s-> s.setState("ok")).collect(Collectors.toList()); 过滤,然后更改过滤结果的属性,然后将结果收集到列表中.但是,调试器说: 无法在原始类型 void 上调用 collect(Collectors.toList()).
..
我已经创建了计算字母表中每个字符的方法.我正在学习流(函数式编程)并尝试尽可能多地使用它们,但在这种情况下我不知道该怎么做: 私有映射numerateAlphabet(列表字母){映射m = new HashMap();for (int i = 0; i
..
在 Java 8 中,Stream 有一个方法 reduce: T reduce(T identity, BinaryOperator accumulator); 累加器运算符是否允许修改它的任何一个参数?我认为不是,因为 JavaDoc 说累加器应该是 NonInterfering,尽管所有示例都谈到修改集合,而不是修改集合的元素. 所以,举个具体的例子,如果我们有 integer
..
..
我有一个流,例如: Arrays.stream(new String[]{"matt", "jason", "michael"}); 我想删除以相同字母开头的名称,以便只剩下一个以该字母开头的名称(不管是哪个). 我试图了解 distinct() 方法有效.我在文档中读到它基于对象的“equals"方法.但是,当我尝试包装 String 时,我注意到 equals 方法从未被调用,并且没
..
这个问题不是关于 HashMap 不是线程安全的众所周知和记录的事实,而是关于它在 HotSpot 和 JDK 代码上的特定故障模式.我很惊讶这段代码很容易因 NPE 而失败: public static void main(String[] args) {映射m = new HashMap(0, 0.75f);IntStream.range(0, 5).parallel().
..
我想做以下事情: 列表list = IntStream.range(0, 7).collect(Collectors.toList()); 但在某种程度上,结果列表是 Guava 的 ImmutableList 的实现. 我知道我能做到 列表list = IntStream.range(0, 7).collect(Collectors.toList());列表immutable
..
我想对 seq1 升序和 seq2 降序排序,所以我这样做: list = list.stream().sorted(comparing(AClass::getSeq1).thenComparing(AClass::getSeq2).reversed()).collect(toList()); 但是结果出来是因为 seq1 和 seq2 都是按降序排序的. 我可以这样做让 seq1 升序
..
我正在尝试从 n 维 int 数组中获取 IntStream.有没有很好的 API 方法来做到这一点?我知道两个流的连接方法. 解决方案 假设您想以行优先方式顺序处理数组数组,这应该可以: int[][] arr = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };IntStream 流 = Arrays.stream(arr).flatMapToInt(x ->
..
..
我有一个 List 可以表示(简化)JSON 样式: [ { 代码=欧元,描述=欧元,比率=1 },{ 代码=美元,描述=美元,比率=1.1 } ] 我想像这样在 Map 中转换它: { EUR={ codice=EUR, description=Euro, ratio=1 }, USD={ codice=USD,描述=美元,比率=
..
为了更好地理解新的流 API,我正在尝试转换一些旧代码,但我坚持使用这个. 公共集合asDestSet() {HashMap>map = new HashMap>();//...设置结果 = 新的 HashSet();for (设置 v : map.values()) {结果.addAll(v);}返回结果;} 我似乎无法为其创建有效的收集器:
..
我想展平一个 Map,它将 Integer 键关联到 String 列表,而不会丢失键映射.我很好奇,好像使用 stream 和 lambda 这样做是可能和有用的. 我们从这样的开始: 映射>mapFrom = new HashMap(); 让我们假设 mapFrom 填充在某个地方,看起来像: 1: a,b,c2:d,e,f等等. 我们还假设列表中的值是唯一
..
在 Java 8 中,Collection 接口扩展了两个返回 Stream 的方法:返回顺序流的 stream() 和返回顺序流的 parallelStream(),它返回一个可能并行的流.Stream 本身也有一个 parallel() 方法,该方法返回等效的并行流(将当前流变为并行或创建新流). 重复有明显的缺点: 令人困惑.一个问题询问 是否有必要同时调用 paralle
..
我想用 lambda 缩进实现如下: 多行语句: String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "瑞克 (M)" };列表字符串 = Arrays.stream(ppl).筛选((x) ->{返回 x.contains("(M)");}).coll
..
我正在寻找可以制作集合流的方法,但它是 null 安全的.如果collection 为null,则返回空流.像这样: Utils.nullSafeStream(collection).filter(...); 我已经创建了自己的方法: 公共静态流nullSafeStream(集合集合){if (collection == null) {返回 Stream.empty();}返回集
..