gpt4 book ai didi

java - 基于 java 8 流中先前元素的过滤

转载 作者:行者123 更新时间:2023-12-02 08:13:26 25 4
gpt4 key购买 nike

我有一个特定的条件,是否要通过与前一个元素进行比较来将列表分为两部分。情况是有一个名为 field1 的字段,我需要将所有元素分组到另一个列表中,其中先前元素 field1 为 0。我在收集或 groupingBy/partitioningBy 中没有看到任何选项来提供与先前元素进行比较的方法。

 private List<Class2> mapClasses(List<Class1> l1) {
l1.sort(comparingInt(Class1::getField1());
List<Class1> list1= new ArrayList<>();
List<Class1> list2 = new ArrayList<>();

for (int i = 0; i < l1.size(); i++) {
if (i == 0 && isOk(l1.get(0))) {
consecutiveClasses.add(l1.get(0));
} else if (i > 0 && isOk(l1.get(i - 1))) {
consecutiveClasses.add(l1.get(i));
} else {
nonConsecutiveClasses.add(l1.get(i));
}
}

List<Class2> collapsedClass2s = mapNonConsecutiveClasses(nonConsecutiveClass2s);
mapConsecutiveClasses(consecutiveClasses).ifPresent(collapsedClasses::add);
return collapsedClasses;
}

private boolean m2(Class1 current, Class1 previous) {
return (current.isLocked() && previous.isLocked()) || (!current.isLocked() && !previous.isLocked());
}

有没有办法使用 Java 8 流来做到这一点?

最佳答案

“从对象列表中,我只想提取其前一个元素的字段设置为 0 的单独列表。”以此为基础

List<Object2> collect = IntStream.rangeClosed(1, objects.size()-1)
.filter(i -> objects.get(i - 1).firld1== 0)
.mapToObj(i -> objects.get(i))
.collect(Collectors.toList());

关于java - 基于 java 8 流中先前元素的过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59482791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com