类型转换一般方法
//List<Integer>转List<String>
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
List<String> strings = Lists.transform(list, new Function<Integer, String>() {
@Override
public String apply(@Nullable Integer integer) {
return integer.toString();
}
});
System.out.println(strings.toString());
List<Integer>转List<String>
List<Integer> aa = new ArrayList<>();
aa.add(11);
aa.add(22);
//List<Integer>转List<Integer>
List<String> a = aa.stream().map(String::valueOf).collect(Collectors.toList());
List<String>转List<Integer>
List<String> aa = new ArrayList<>();
aa.add("11");
aa.add("22");
//List<String>转List<Integer>
List<Integer> a = aa.stream().map(Integer::valueOf).collect(Collectors.toList());
List集合的排序
//list集合的排序
简单方法:
Collections.sort(list); //从小到大
Collections.reverse(list);//顺序颠倒
若从大到小排序,将两者结合使用
//将userList依照年龄从小到大排序
userList.sort(Comparator.comparing(User::getAge));
//将userList依照年龄从大到小排序
userList.sort(Comparator.comparing(User::getAge).reversed());
//或者以下
Collections.sort(userList, new Comparator<User>(){
@Override
public int compare(User a, User b) {
//将userList依照年龄从小到大
return a.getAge().compareTo(b.getAge());
//将userList依照年龄从大到小
//return b.getAge().compareTo(a.getAge());
}
});
取出一组对象的某个属性组成一个新集合
//将User的age属性组成新集合
List<Integer> ages=userList.stream().map(User::getAge).collect(Collectors.toList());
//或者
List<String> nameList = userList.stream().map(s -> s.getName()).collect(Collectors.toList());
List<String> namelist = list.stream().map(s -> s.getName().replace("-", "")).collect(Collectors.toList());
根据某个属性添加条件过滤数据
public static void main(String[] args) {
List<Integer> aa = new ArrayList<>();
aa.add(110);
aa.add(111);
aa.add(112);
aa.add(113);
//过滤条件是大于等于111
List<Integer> list = aa.stream().filter(a -> a >= (111)).collect(Collectors.toList());
System.out.println(list); //结果list 包含111,112,113
List<String> aa1 = new ArrayList<>();
aa1.add("110");
aa1.add("111");
aa1.add("112");
aa1.add("113");
//过滤条件是不等于"111"
List<String> list1 = aa1.stream().filter(a -> !a.equals("111")).collect(Collectors.toList());
System.out.println(list1); //结果包含"110","112","113"
}
List<User> userlist= new ArrayList<>();
//过滤条件是用户年龄不小于20
List<User> list = userlist.stream().filter(u -> u.getAge() >= 20).collect(Collectors.toList());
//过滤条件是 10到20 之间
userlist.stream().filter(u -> u.getAge() >= 10 && u.getAge() < 20).collect(Collectors.toList());
判断一组对象里面有没有属性值是某个值
//判断集合中是否有叫"小明"的用户
List<User> userList =new ArrayList<>();
boolean aa= userList.stream().anyMatch(u -> "小明".equals(u.getName()));
根据某属性分组
//userlist根据年龄分组
List<User> userlist = new ArrayList<>();
Map<Integer, List<User>> collect = userlist.stream().collect(Collectors.groupingBy(User::getAge));
集合中的某属性统一赋值
//集合中的某属性统一赋值 (userlist 集合中的age统一设置为18)
List<User> userlist = new ArrayList<>();
userlist.stream().forEach(u -> u.setAge(18));
List<String> list = stringList.stream().map(s -> s.replace("-", "")).collect(Collectors.toList());
list的其他应用:https://pingzhengguo.blog.csdn.net/article/details/86540899(list的最大,最小,求和,平均)
https://pingzhengguo.blog.csdn.net/article/details/86571528 (去重和提取重复元素)
https://pingzhengguo.blog.csdn.net/article/details/88990352(list集合的分页问题)
https://pingzhengguo.blog.csdn.net/article/details/90484690(list和树状间的转换)