【发布时间】:2020-03-02 23:57:11
【问题描述】:
例如,我需要遍历自定义列表List<Model> 并比较其中的项目。所以使用for 循环它看起来像这样
for(int i = 0; i < list.size()-1; i++) {
for (int j = i + 1; j < list.size(); j++) {
if (list.get(i).getSomeItem().equals(list.get(j).getSomeItem()){
/*modify the list using*/
list.get(j).setSomeOtherItem(list.get(i).getSomeItem()+list.get(j).getSomeItem());
}
}
}
但是如何使用流或 forEach() 获得相同的结果?我正在尝试制作这样的东西
for (Model i : list){
for (Model j : list){
if(i.getSomeItem.equals(j.getSomeItem()){
/*same logic as in for loop*/
}
}
}
或者这个
List<StorageModel> newList = list.stream()
.filter(item -> item.getSomeItem.equals...)
所以问题是forEach 两个循环都从同一个元素开始并比较相同的项目。对于流,我不知道如何获得下一个值。有什么办法吗?
【问题讨论】:
-
真正重要的是 "some logic" 是什么,通过流实现它。否则,无论如何,你最好使用 for 每次迭代。
-
好吧,我的错!我会删除它。
-
为什么要用流的东西替换使用传统 for 循环的工作代码?仅仅因为你使用的是 Java8 或更高版本,并不意味着一切都应该重写。
-
@Eritrean 我正在尝试学习新事物,我认为这个问题会很有趣:)
-
您想将
i与i+1元素或i与列表中的其余元素进行比较吗? @SauliusMeidus
标签: java for-loop arraylist foreach java-stream