gpt4 book ai didi

Java 8 : groupby with Comparator

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:18 25 4
gpt4 key购买 nike

我有一个 int 列表,例如 (1,2,4,6,7,8)。我想知道 Java 8 中是否有创建列表列表的方法。

如果

(x,y)->x+1=y 

它应该在同一个列表中。

在这个例子中输出应该是:

(1,2), (4), (6,7,8)

我可以这样写:

public static List<List<int>> group(List<int> list, GroupFunctionByOrder groupFunction) {

List<List<int>> result = new ArrayList<>();

for (int l : list) {

boolean groupFound = false;
for (List<int> group : result) {
if (groupFunction.sameGroup(l, group.get(group.size()-1))) {
group.add(l);
groupFound = true;
break;
}
}

if (! groupFound) {
List<int> newGroup = new ArrayList<>();
newGroup.add(l);
result.add(newGroup);
}
}

return result;
}

public class GroupFunctionByOrder {
public boolean sameGroup(int l1, int l2){
return l1+1 == l2;
}
}

最佳答案

您可以使用 StreamEx 来做到这一点图书馆:

List<List<Integer>> grouped = StreamEx.of(1,2,4,6,7,8)
.groupRuns((x, y) -> x + 1 == y)
.toList();

关于Java 8 : groupby with Comparator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48375893/

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