java递增_java-8 – 如何按组递增
有一個表,現(xiàn)在添加一個新列 – sort_num int default 0
id level sort_num
1 1 0
2 1 0
3 2 0
4 2 0
5 2 0
6 3 0
7 3 0
8 3 0
9 3 0
現(xiàn)在我想設(shè)置如下的sort_num值
id level sort_num
1 1 1
2 1 2
3 2 1
4 2 2
5 2 3
6 3 1
7 3 2
8 3 3
9 3 4
上面的Java代碼實現(xiàn)要求是
int sortNum = 0;
int currentLevel = fooList.get(0).getLevel();
for (RuleConf foo : fooList) {
if(currentLevel != foo.getLevel()){
sortNum = 0;
currentLevel = foo.getLevel();
}
foo.setSortNum(++sortNum);
}
我想知道Java8是否可以簡化上面的代碼?
PS.使用mysql來實現(xiàn)此要求
set @index:=0; update t set sort_num = (@index:=@index+1) where level = 1 order by id;
set @index:=0; update t set sort_num = (@index:=@index+1) where level = 2 order by id;
set @index:=0; update t set sort_num = (@index:=@index+1) where level = 3 order by id;
最佳答案 最好的方法是堅持你的普通增強循環(huán).我不認為有可能提出單個Stream解決方案,因為您需要具有中間值.喜歡:
Map> levels = fooList.stream()
.collect(Collectors.groupingBy(RuleConf::getLevel));
levels.values().forEach(v ->
IntStream.range(0, v.size()).forEach(i -> v.get(i).setSortNum(i + 1))
);
總結(jié)
以上是生活随笔為你收集整理的java递增_java-8 – 如何按组递增的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸡蛋和鸭蛋哪个营养更高?
- 下一篇: 易语言操作php文本文件,易语言对文本操