1、foreach
public static <T> Consumer<T> forEachWithIndex(BiConsumer<T, Integer> biConsumer) {
/*这里说明一下,我们每次传入forEach都是一个重新实例化的Consumer对象,在lambada表达式中我们无法对int进行++操作,
我们模拟AtomicInteger对象,写个getAndIncrement方法,不能直接使用AtomicInteger哦*/
class IncrementInt {
private Integer i = 0;
public Integer getAndIncrement() {
return i++;
}
}
IncrementInt incrementInt = new IncrementInt();
return t -> biConsumer.accept(t, incrementInt.getAndIncrement());
}
使用List.foreach((item,index)->{业务处理})
2、Map通过key排序升序和降序
public static <K extends Comparable<? super K>, V> Map<K, V> sortByKey(
Map<K, V> map, boolean isDesc) {
Map<K, V> result = new LinkedHashMap<>();
if (isDesc) {
map.entrySet().stream()
.sorted(Map.Entry.<K, V>comparingByKey().reversed())
.forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
} else {
map.entrySet().stream()
.sorted(Map.Entry.<K, V>comparingByKey())
.forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
}
return result;
}
3根据某几个字段去重
https://blog.csdn.net/qq_28988969/article/details/81119587