服务热线
135-6963-3175
1、取对象集合中某字段集合
List<String> ids= users.stream().map(User::getServiceId).collect(Collectors.toList())
2、对象集合按字段排序(以下为倒序)
users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
3、forEach遍历
users.stream().forEach(obj->{
ids.add(obj.getId());
ids.add(obj.getName());
});4、list中某两个字段转map
Map<String, String> nameMaps = orgs.stream().collect(Collectors.toMap(User::getId, User::getName));
value为实体时:
Map<Long,User> map = users.stream().collect(Collectors.toMap(User::getId,user -> user));
5、group by分组
按age进行分组:
Map<Integer, List<User>> personGroups = Stream.generate(new User()).collect(Collectors.groupingBy(User::getAge));
方式二:
Map<Integer, List<User>> userMaps =users.stream().collect(Collectors.groupingBy(User::getAge));
6、对list对象里的字段进行分组,并把另一个字段放入list
Map<Integer,List<String>> map=users.stream().collect(Collectors.groupingBy(User::getAge,Collectors.mapping(User::getName,Collectors.toList())));
7、对map-list进行排序
Map<Integer,List<String>> map1 = new HashMap<>();
map1.put(4,Lists.newArrayList("1","2","7","8","5"));
map1.put(3,Lists.newArrayList("5"));
map1.put(1,Lists.newArrayList("1","2","8","5"));
map1.put(2,Lists.newArrayList("2","2","8"));
//排序
Map<Integer,List<String>> sorted = map1.entrySet().stream()
.sorted(Comparator.comparingInt(e->e.getValue().size()))
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue,(a,b) -> {throw new AssertionError();},LinkedHashMap::new));
Map<Integer,List<String>> reverdMap=new LinkedHashMap<Integer,List<String>>();
//倒序
ListIterator<Map.Entry<Integer,List<String>>> i = new ArrayList<Map.Entry<Integer,List<String>>>(sorted.entrySet()).listIterator(sorted.size());
while(i.hasPrevious()) {
Map.Entry<Integer,List<String>> entry=i.previous();
reverdMap.put(entry.getKey(),entry.getValue());
}
for(Integer key:reverdMap.keySet()){
System.out.println(reverdMap.get(key));
}