目录
筛选
需求:
- 筛选出年龄大于20的人
实体类 User.java
package com.example.demo; public class User { private String name; private Integer age; public User(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
使用for循环
package com.example.demo; import java.util.ArrayList; import java.util.List; public class Demo { public static void main(String[] args) { List<User> userList = new ArrayList<>(); userList.add(new User("刘备", 40)); userList.add(new User("关羽", 30)); userList.add(new User("张飞", 20)); // 筛选出年龄大于20的人 List<User> newUserList = new ArrayList<>(); for (User user : userList) { if (user.getAge() > 20) { newUserList.add(user); } } System.out.println(newUserList); // [User{name='刘备', age=40}, User{name='关羽', age=30}] } }
使用Stream
package com.example.demo; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class Demo { public static void main(String[] args) { List<User> userList = new ArrayList<>(); userList.add(new User("刘备", 40)); userList.add(new User("关羽", 30)); userList.add(new User("张飞", 20)); // 筛选出年龄大于20的人 List<User> newUserList = userList .stream() .filter(u -> u.getAge() > 20) .collect(Collectors.toList()); System.out.println(newUserList); // [User{name='刘备', age=40}, User{name='关羽', age=30}] } }
循环
JDK7
package com.example.demo; import java.util.ArrayList; import java.util.List; public class Demo { public static void main(String[] args) { List<User> userList = new ArrayList<>(); userList.add(new User("刘备", 40)); userList.add(new User("关羽", 30)); userList.add(new User("张飞", 20)); for (User user : userList) { System.out.println(user); } // User{name='刘备', age=40} // User{name='关羽', age=30} // User{name='张飞', age=20} } }
package com.example.demo; import java.util.ArrayList; import java.util.List; public class Demo { public static void main(String[] args) { List<User> userList = new ArrayList<>(); userList.add(new User("刘备", 40)); userList.add(new User("关羽", 30)); userList.add(new User("张飞", 20)); userList.stream().forEach(u -> { System.out.println(u); }); // 或者 // userList.forEach(u -> { // System.out.println(u); // }); // User{name='刘备', age=40} // User{name='关羽', age=30} // User{name='张飞', age=20} } }
聚合函数
需求:
- 获取List 中字符串最长的那个
JDK7
package com.example.demo; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Demo { public static void main(String[] args) { String[] strArr = new String[]{"a", "bb", "ccc"}; List<String> list = Arrays.asList(strArr); String max = Collections.max(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { if (o1.length() < o2.length()) { return -1; } else if (o1.length() > o2.length()) { return 1; } else { return o1.compareTo(o2); } } }); System.out.println(max); // ccc } }
JDK8
package com.example.demo; import java.util.*; public class Demo { public static void main(String[] args) { String[] strArr = new String[]{"a", "bb", "ccc"}; List<String> list = Arrays.asList(strArr); Optional<String> max = list.stream() .max(Comparator.comparing(String::length)); System.out.println(max.get()); // ccc } }
count
package com.example.demo; import java.util.*; public class Demo { public static void main(String[] args) { // 获取List中大于2的元素的个数 List<Integer> list = Arrays.asList(1, 2, 3); long count = list.stream() .filter(x -> x > 2) .count(); System.out.println(count); // 1 } }
Map
需求:
- 获取List中的name 数据
JDK7
package com.example.demo; import java.util.*; public class Demo { public static void main(String[] args) { List<User> userList = new ArrayList<>(); userList.add(new User("刘备", 40)); userList.add(new User("关羽", 30)); userList.add(new User("张飞", 20)); List<String> names = new ArrayList<>(); for (User user : userList) { names.add(user.getName()); } System.out.println(names); // [刘备, 关羽, 张飞] } }
JDK8
package com.example.demo; import java.util.*; import java.util.stream.Collectors; public class Demo { public static void main(String[] args) { List<User> userList = new ArrayList<>(); userList.add(new User("刘备", 40)); userList.add(new User("关羽", 30)); userList.add(new User("张飞", 20)); List<String> names = userList.stream() .map(User::getName) .collect(Collectors.toList()); System.out.println(names); // [刘备, 关羽, 张飞] } }
参考