1. removeIf
Collection<Person> collection = new ArrayList();
collection.add(new Person("张三", 22, "男"));
collection.add(new Person("李四", 19, "女"));
collection.add(new Person("王五", 34, "男"));
collection.add(new Person("赵六", 30, "男"));
collection.add(new Person("田七", 25, "女"));
//过滤30岁以上人
collection.removeIf(
person -> person.getAge() >= 30
);
2. List根据内部元素转换Map结构
public class StreamTest {
public static List<User> users;
static {
users = new ArrayList<>();
User user1 = new User();
user1.setName("xiaoming1");
user1.setSex("男");
user1.setAge(22);
User user2 = new User();
user2.setName("xiaoming2");
user2.setSex("女");
user2.setAge(21);
User user3 = new User();
user3.setName("xiaoming3");
user3.setSex("男");
user3.setAge(22);
User user4 = new User();
user4.setName("xiaoming4");
user4.setSex("男");
user4.setAge(23);
User user5 = new User();
user5.setName("xiaoming5");
user5.setSex("女");
user5.setAge(19);
User user6 = new User();
user6.setName("xiaoming6");
user6.setSex("男");
user6.setAge(22);
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
users.add(user5);
users.add(user6);
}
public static void main(String[] args) {
testToMap();
}
public static void testToMap() {
/**
* key:getSex
* value: getName
* (k1, k2) -> k1 + "," + k2 : 如果有相同的key,则value按照逗号合并
*/
Map<String, String> collect = users.stream().collect(Collectors.toMap(User::getSex, User::getName, (k1, k2) -> k1 + "," + k2));
System.out.println(JSON.toJSONString(collect));
}
}
输出
{"女":"xiaoming2,xiaoming5","男":"xiaoming1,xiaoming3,xiaoming4,xiaoming6"}