List转为Map<String, List>
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User("1", "001", "name1"));
list.add(new User("2", "002", "name2"));
list.add(new User("3", "003", "name3"));
list.add(new User("3", "003", "name03"));
list.add(new User("3", "003", "name03"));
Map<String, List<User>> map = list
.stream()
.collect(Collectors.groupingBy(User::getCode));
System.out.println(map);
}
List转Map<String,Object>
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User("1", "001", "name1"));
list.add(new User("2", "002", "name2"));
list.add(new User("3", "003", "name3"));
Map<String, User> map = list.stream()
.collect(Collectors.toMap(User::getId, Function.identity()));
System.out.println(map);
}
注意:
这里的key不能重复,重复会报错
key值重复
如果key值可能会重复,使用以下方式:
保留第一个值
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User("1", "001", "name1"));
list.add(new User("2", "002", "name2"));
list.add(new User("3", "003", "name3"));
list.add(new User("3", "003", "name03"));
list.add(new User("3", "003", "name003"));
//如果id重复,保留现有的值
Map<String, User> map = list
.stream()
.collect(Collectors.toMap(User::getId, Function.identity(),
(existing, replacement) -> existing));
System.out.println(map);
}
保留最新的值
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User("1", "001", "name1"));
list.add(new User("2", "002", "name2"));
list.add(new User("3", "003", "name3"));
list.add(new User("3", "003", "name03"));
list.add(new User("3", "003", "name003"));
//如果id重复,保留新的值
Map<String, User> map = list
.stream()
.collect(Collectors.toMap(User::getId, Function.identity(),
(existing, replacement) -> replacement));
System.out.println(map);
}
去除集合中的重复元素
/**
* 去除集合中的重复元素
*/
private static void distinct() {
List<String> list = Arrays.asList("a", "b", "a", "c");
list = list.stream().distinct().collect(Collectors.toList());
list.forEach(System.out::println);
}
获取集合中的第一个元素
/**
* 获取集合中的第一个元素
*/
private static void getFirst() {
List<String> list = Arrays.asList("a", "b", "c");
String first = list.stream().findFirst().get();
System.out.println(first);
}
检查是否存在满足条件的元素
/**
* 检查是否存在满足条件的元素
*/
private static void anyMatch() {
List<String> list = Arrays.asList("a", "b", "c");
boolean anyMatch = list.stream().anyMatch(s -> s.equals("a"));
System.out.println(anyMatch);
}
检查是否所有元素都满足条件
/**
* 检查是否所有元素都满足条件
*/
private static void allMatch() {
List<String> list = Arrays.asList("a", "b", "c");
boolean allMatch = list.stream().allMatch(s -> s.length() == 1);
System.out.println(allMatch);
}
检查是否所有元素都不满足条件
/**
* 检查是否所有元素都不满足条件
*/
private static void noneMatch() {
List<String> list = Arrays.asList("a", "b", "c");
boolean noneMatch = list.stream().noneMatch(s -> s.length() > 1);
System.out.println(noneMatch);
}