【JAVA】Lambda使用
2019-08-23 本文已影响0人
Y了个J
List转Map
public Map<Long, String> getIdNameMap(List<Account> accounts) {
return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));
}
public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
return accounts.stream().collect(Collectors.toMap(Account::getId, account -> account));
}
排序
crowdList.sort((Comparator.comparing(o -> Optional.ofNullable(o.getSumData()).map(SumDataDTO::getCharge).orElse(0.0))));
crowdList = crowdList.stream().sorted((Comparator.comparing(o ->
Optional.ofNullable(o.getSumData()).map(SumDataDTO::getCharge).orElse(0.0)))
).collect(Collectors.toList());
public static void main(String[] args) {
List<Long> listA = Lists.newArrayList(1L, 2L, 3L, 4L);
List<Long> listB = Lists.newArrayList(1L, 2L, 6L, 8L);
//取两数组的交集
List<Long> result = listB.stream().filter(listA::contains).distinct().collect(Collectors.toList());
System.out.println(result);
}
按某个属性进行分组
Map<Long, List<AsAdgroupCrowdDataHis>> crowDatasMap = dataHisList.stream().collect(Collectors.groupingBy(AsAdgroupCrowdDataHis::getCrowdid));
提取对象某个属性
List<String> stringList = keywordList.stream().map(SubwaysAlgorithmDeleteKeyword::getWord).distinct().collect(Collectors.toList());
//对象数组按coverage倒序排序
apiHotWordList = apiHotWordList.stream().sorted(Comparator.comparing(ApiKeyWord::getCoverage).reversed()).collect(Collectors.toList());
public static void main(String[] args) {
List<Long> listA = Lists.newArrayList(1L, 2L, 3L, 4L, 2L, 1L);
//倒序
listA.sort(Collections.reverseOrder());
System.out.println(listA);
//正序
Collections.sort(listA);
System.out.println(listA);
}
public static void main(String[] args) {
TestVO vo1 = new TestVO();
vo1.setId(1L);
vo1.setNum(2);
TestVO vo2 = new TestVO();
vo2.setId(1L);
vo2.setNum(1);
List<TestVO> list = new ArrayList<>();
list.add(vo1);
list.add(vo2);
//汇总数组对象某个属性的和
Integer num = list.stream().mapToInt(TestVO::getNum).sum();
System.out.println(num);//3
Map<Long, Integer> map = list.stream().collect(Collectors.groupingBy(TestVO::getId, Collectors.summingInt(TestVO::getNum)));
System.out.println(map);
}