List<T> 根據對象中的屬性處理數據
一、創建測試數據
UserEntity user1 = UserEntity.builder().id(1).name("張三").sex(0).build();
UserEntity user2 = UserEntity.builder().id(2).name("李四").sex(0).build();
UserEntity user3 = UserEntity.builder().id(3).name("張三").sex(0).build();
UserEntity user4 = UserEntity.builder().id(4).name("李四").sex(0).build();
UserEntity user5 = UserEntity.builder().id(5).name("王五").sex(1).build();
List<UserEntity> UserList = new ArrayList<>();
UserList.add(user1);
UserList.add(user2);
UserList.add(user3);
UserList.add(user4);
UserList.add(user5);
System.out.println("(1)創建測試數據:"+UserList);
二、將測試數據 姓名、性別一致的數據進行過濾
List<UserEntity> UserList2 = UserList.stream().collect( Collectors.collectingAndThen( Collectors.toCollection( () -> new TreeSet<>(Comparator.comparing(p -> p.getName()+ p.getSex()))),ArrayList::new)); System.out.println("(2)將姓名、性別一致的進行過濾:"+UserList2);
三、將測試數據按照ID倒敘進行排序
List<UserEntity> collect = UserList.stream().sorted(Comparator.comparing(UserEntity::getId).reversed()).collect(Collectors.toList());
System.out.println("(3)將數據按照id倒敘進行排序:"+collect);
四、將測試數據與第二步處理后的數據(UserList2)進行姓名、年齡一致的過濾出來,并且將姓名賦值成 "張三豐"
List<UserEntity> result = UserList.stream() .flatMap(x -> UserList2.stream() .filter(y -> x.getName().equals(y.getName()) && x.getSex().equals(y.getSex()))) .peek(y -> { y.setName("張三豐"); }).collect(Collectors.toList()); System.out.println("(4)將姓名.性別一致的在主數據中過濾出來,并且將名稱賦值成\"張三豐\":"+result);
五、將測試數據按照Id進行分組
Map<Integer, List<UserEntity>> collect1 = UserList.stream().collect(Collectors.groupingBy(UserEntity::getSex)); System.out.println("(5-1)獲取性別是【0】的數據信息"+collect1.get(0)); System.out.println("(5-2)獲取性別是【1】的數據信息"+collect1.get(1)); for (Map.Entry<Integer, List<UserEntity>> entry : collect1.entrySet()) { System.out.println("(5-3)將測試數據按照性別進行分組-遍歷方法一:-key = " + entry.getKey() + ", value = " + entry.getValue()); } collect1.forEach((k, v) -> System.out.println("(5-4)將測試數據按照性別進行分組-遍歷方法二:-key = " + k + ", value = " + v));
六、控制臺輸出如下:
(1)創建測試數據:[UserEntity(id=1, name=張三, sex=0), UserEntity(id=2, name=李四, sex=0), UserEntity(id=3, name=張三, sex=0), UserEntity(id=4, name=李四, sex=0), UserEntity(id=5, name=王五, sex=1)] (2)將姓名、性別一致的進行過濾:[UserEntity(id=1, name=張三, sex=0), UserEntity(id=2, name=李四, sex=0), UserEntity(id=5, name=王五, sex=1)] (3)將數據按照id倒敘進行排序:[UserEntity(id=5, name=王五, sex=1), UserEntity(id=4, name=李四, sex=0), UserEntity(id=3, name=張三, sex=0), UserEntity(id=2, name=李四, sex=0), UserEntity(id=1, name=張三, sex=0)] (4)將姓名.性別一致的在主數據中過濾出來,并且將名稱賦值成"張三豐":[UserEntity(id=1, name=張三豐, sex=0), UserEntity(id=2, name=張三豐, sex=0), UserEntity(id=5, name=張三豐, sex=1)] (5-1)獲取性別是【0】的數據信息[UserEntity(id=1, name=張三豐, sex=0), UserEntity(id=2, name=張三豐, sex=0), UserEntity(id=3, name=張三, sex=0), UserEntity(id=4, name=李四, sex=0)] (5-2)獲取性別是【1】的數據信息[UserEntity(id=5, name=張三豐, sex=1)] (5-3)將測試數據按照性別進行分組-遍歷方法一:-key = 0, value = [UserEntity(id=1, name=張三豐, sex=0), UserEntity(id=2, name=張三豐, sex=0), UserEntity(id=3, name=張三, sex=0), UserEntity(id=4, name=李四, sex=0)] (5-3)將測試數據按照性別進行分組-遍歷方法一:-key = 1, value = [UserEntity(id=5, name=張三豐, sex=1)] (5-4)將測試數據按照性別進行分組-遍歷方法二:-key = 0, value = [UserEntity(id=1, name=張三豐, sex=0), UserEntity(id=2, name=張三豐, sex=0), UserEntity(id=3, name=張三, sex=0), UserEntity(id=4, name=李四, sex=0)] (5-4)將測試數據按照性別進行分組-遍歷方法二:-key = 1, value = [UserEntity(id=5, name=張三豐, sex=1)]
古今成大事者,不唯有超世之才,必有堅韌不拔之志!

浙公網安備 33010602011771號