java-8相关内容
我有一个列表 fooList 类 Foo {私有字符串类别;私人 int 金额;私人国际价格;...构造函数,吸气剂和二传手} 我想按类别分组,然后将金额和价格相加. 结果将存储在地图中: 地图>map = new HashMap(); 关键是 Foo 持有汇总的金额和价格,并带有一个列表作为所有具有相同类别的对象的值. 到目前为止,我已经尝试
..
我正在阅读 Java 8,特别是“Streams API".我想知道流是如何变得懒惰的? 我相信流只是作为库添加的,并且没有对语言进行任何更改以支持惰性.另外,如果有人告诉我这是通过反思实现的,我会感到震惊. 解决方案 为什么需要反射来获得懒惰?例如,考虑这个类: 类 LazySeq{私人最终名单列表;私有谓词输入){this.list = new ArrayList
..
我有一个 Java 类 Parent 有 20 个属性 (attrib1, attrib2 .. attrib20) 及其对应的 getter 和 setter.我还有两个 Parent 对象列表:list1 和 list2. 现在我想合并两个列表并避免基于 attrib1 和 attrib2 的重复对象. 使用 Java 8: 列表结果 = Stream.concat(li
..
我想知道什么时候可以有效地使用 IntStream.range.我不确定 IntStream.range 有多大用处的三个原因. (请将开始和结束视为整数.) 如果我想要一个数组,[start, start+1, ..., end-2, end-1],下面的代码要快得多. int[] arr = new int[end - start];整数索引 = 0;for(int i = st
..
在 Java 中,可以使用 Stream.generate(supplier) 轻松生成无限流.但是,我需要生成一个最终会完成的流. 例如,想象一下,我想要一个目录中所有文件的流.文件的数量可能很大,因此我无法预先收集所有数据并从中创建一个流(通过 collection.stream()).我需要逐个生成序列.但是流显然会在某个时候结束,并且像 (collect() 或 findAny())
..
..
我有这样的课: 类 MultiDataPoint {私有日期时间时间戳;私有地图关键数据;} 我想为每个 MultiDataPoint 生成 , 类数据集 {公共字符串密钥;列出数据点;}类数据点{日期时间时间戳;号码资料;} 当然,一个“键"在多个 MultiDataPoints 中可以是相同的. 那么给定一个 List,我
..
我有一个想要转换和过滤的 Java 地图.作为一个简单的例子,假设我想将所有值转换为整数,然后删除奇数项. Map输入 = 新哈希映射();input.put("a", "1234");input.put("b", "2345");input.put("c", "3456");input.put("d", "4567");映射输出 = input.entrySet().str
..
我正在使用它来获取最新项目.我怎样才能使它成为空安全并使用空日期最后(最旧)进行排序.createDt 是一个 joda LocalDate 对象. 可选latestItem = items.stream().sorted((e1, e2) -> e2.getCreateDt().compareTo(e1.getCreateDt())).findFirst(); 解决方案 如果是 Item
..
和几乎所有人一样,我仍在学习新的 Java 8 Streams API 的复杂性(并喜欢它们).我有一个关于流使用的问题.我将提供一个简化的示例. Java Streams 允许我们获取一个 Collection,并在其上使用 stream() 方法来接收其所有元素的流.其中有许多有用的方法,例如 filter()、map() 和 forEach(),它们允许我们对内容使用 lambda 操
..
..
我想用 Java 8 编写纯函数,它将一个集合作为参数,对该集合的每个对象应用一些更改,并在更新后返回一个新集合.我想遵循 FP 原则,所以我不想更新/修改作为参数传递的集合. 有没有什么方法可以用 Stream API 做到这一点,而无需先创建原始集合的副本(然后使用 forEach 或“正常"for 循环)? 下面的示例对象,假设我想将文本附加到对象属性之一: 公共类 Sampl
..
除了后者的可读性稍好之外,使用以下构造有什么不同吗? someList.stream().map(item -> new NewClass(item)).collect(Collectors.toList());someList.stream().map(NewClass::new).collect(Collectors.toList()); 解决方案 一般没有区别.NewClass::ne
..
Java 8 流是否类似于 RxJava 可观察对象? Java 8 流定义: 新 java.util.stream 包中的类提供了 Stream API支持对元素流进行函数式操作. 解决方案 简答 所有序列/流处理库都为管道构建提供了非常相似的 API.不同之处在于用于处理多线程和管道组合的 API. 长答案 RxJava 与 Stream 完全不同.在所有
..
我正在编写一个代码来计算斐波那契数.使用此代码,我可以生成斐波那契数列的前 n 个数字. Stream.generate(new Supplier() {私人长 n1 = 1;私人长 n2 = 2;@覆盖公共长获取(){长斐波那契 = n1;长 n3 = n2 + n1;n1 = n2;n2 = n3;返回斐波那契;}}).limit(50).forEach(System.out::printl
..
在 Java 8 流 API 中,对任何 String 对象调用 chars() 会返回一个包含所有字符的 IntStream 对象. 将返回的 IntStream 对象转换回 String 的正确方法是什么?调用 toArray() 会给我一个 int[],它不被任何 String 构造函数接受. 解决方案 你可以使用toArray(),然后String(int[], int, i
..
我有这段代码可以正常工作,但我觉得它很难看. @EqualsAndHashCode公共抽象类动作{@Getter私有列表集团;公共动作合并(@NotNull 动作其他){this.blocs = Stream.of(this.blocs, other.blocs).flatMap(集合::流).collect(groupingBy(ActionsBloc::getCla
..
我的文档如下所示: 数据.txt 100, "一些文字"101,“更多文字"102、《更多文字》 我使用正则表达式处理它并返回一个新的处理文档,如下所示: 流行 = Files.lines(Paths.get(data.txt);模式正则表达式 = Pattern.compile("([\\d{1,3}]),(.*)");列出结果 =行.map(正则表达式::匹配器)
..
我有一个 Contact 类,每个实例都有一个唯一的 contactId. 公开课联系方式{私人长联系方式;...其他变量,getter,setter等...} 还有一个 Log 类,详细说明 Contact 在某个 lastUpdated 日期执行的 action. 公共类日志{私人联系方式;私人日期最后更新;私有字符串动作;...其他变量,getter,setter等...} 现在,在
..
使用 Java 8 lambda 表达式,我正在尝试做这样的事情. 列表对象 = ...;for (OldObject oldObj : oldObjects) {新对象 obj = oldObj.toNewObject();obj.setOrange(true);objs.add(obj);} 我写了这段代码. oldObjects.stream().map(旧 ->
..