1. 创建单个值的集合
package java.util.Collections;
List<String> list = Collections.singletonList("String");
Map<String, String> map = Collections.singletonMap("key", "value");
2. 创建多个值的集合
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
package com.google.common.collect.Lists;
List<String> configKeyList = Lists.newArrayList("value1", "value2");
3. 取出对象集合中的某个字段组成一个新的集合
List<User> userList = new ArrayList<>();
List<String> nameList = userList.stream().map(User::getName).collect(Collectors.toList());
List<Integer> ageList = userList.stream().map(user -> user.getAge().intValue()).collect(Collectors.toList());
4. 排序(sort)
List<User> userList = new ArrayList<>();
Collections.sort(userList, new Comparator<User>() {
public int compare(User user1, User user2) {
return user2.getAge().compareTo(user1.getAge());
}
});
Collections.sort(userList, new Comparator<User>() {
public int compare(User user1, User user2) {
return user1.getAge().compareTo(user2.getAge());
}
});
4.1 排序(stream)
String[] strs = {"abcd", "abc", "a", "ab", "123", "2bd9", "1a9d", "ad"};
List<String> strings = Arrays.asList(strs);
List<String> collectRe = strings.stream().sorted(Comparator.comparingInt(String::length).reversed()).collect(Collectors.toList());
List<String> collect = strings.stream().sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList());
5. 更改集合数据类型
List<Long> longList = new ArrayList<>();
List<String> strList = longList.stream().map(Object::toString).collect(Collectors.toList());
6. 对象集合简单分类
Lisrt<User> userList = new ArrayList<>();
Map<String, List<User>> genderGroup = userList.stream().collect(Collectors.groupingBy(User::getGender));
7. 对象集合复杂分类
List<User> userList = new ArrayList<>();
Map<Map<String, PlaceInfo>, List<User>> userMap1 = userList.stream().collect(Collectors.groupingBy(
user -> {
Map<String, PlaceInfo> map = new HashMap<>();
map.put(user.getSurName(), new PlaceInfo(user.getStreet(), user.getMonth()));
return map;
}));
Map<PlaceInfo, List<User>> userMap2 = userList.stream().collect(Collectors.groupingBy(
user -> new PlaceInfo(user.getStreet(), user.getMonth()),
TreeMap::new,
toList()
));
public class PlaceInfo implements Comparable<PlaceInfo> {
private String month;
private String street;
private String floor;
@Override
public int compareTo(PlaceInfo o) {
int c1 = this.month.compareTo(o.month);
if (c1 != 0) {
return c1;
}
if (this.street != null && o.street != null) {
int c2 = this.floor.compareTo(o.floor);
if (c2 != 0) {
return c2;
}
return this.street.compareTo(o.street);
} else {
return this.floor.compareTo(o.floor);
}
}
}
8. 集合去重
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
package com.google.common.collect.Lists;
List<String> nameList = Lists.newArrayList("1", "1", "2", "3");
List<String> distinctNameList = nameList.stream().distinct().collect(Collectors.toList());
9. List转Map
Map<String, String> map = list.stream().collect(Collectors.toMap(User::getName, User::getPhone, (value1, value2) -> value2));
Map<String, User> collect = list.stream().collect(Collectors.toMap(User::getName, Function.identity()));
Map<String, User> map = list.stream().filter(user -> StringUtils.isBlank(user.getName())).collect(Collectors.toMap(User::getName, Function.identity(), (key1, key2) -> key2));
10. 集合过滤
List<Integer> filterList = list.stream().filter(value -> value <= 100).collect(Collectors.toList());
11. 创建指定排序规则的集合
TreeSet<User> treeSet = new TreeSet<>((Comparator.comparing(User::getAge)));