• 对Java8 stream的简单实践


    最近学习很多Java8方面的新特性,特地做了一些简单的实践和总结。

    import java.util.*;
    import java.util.stream.Collectors;
    
    public class StreamTest {
        static class User{
            private String name;
            private int age;
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
    
            public void setAge(int age) {
                this.age = age;
            }
    
            public User(String name, int age) {
                this.name = name;
                this.age = age;
            }
    
            @Override
            public String toString() {
                return name;
            }
    // 重写hashCode @Override
    public int hashCode() { int n = 31; n = n * 31 + age; n = n* 31 + name.hashCode(); return n; } @Override public boolean equals(Object obj) { if (!(obj instanceof User)) { return false; } User user1 = (User) obj; return this.name.equals(user1.name) && Integer.valueOf(age).equals(user1.age); } } public static void main(String[] args) { List<User> list = new ArrayList<>(); User user1 = new User("zdx", 12); User user2 = new User("zdx1", 12); User user3 = new User("zdx2", 18); User user4 = new User("zdx3", 22); list.add(user1); list.add(user2); list.add(user3); list.add(user4); // 将 Stream 转化为List 并且实现去重 List list1 = list.stream().distinct().collect(Collectors.toList()); list1.forEach(System.out::println); // 将 Stream 转化为 Map // 实现此方法需要注意添加进Map的的 key 值不可以重复,否则会抛出异常!!!! Map<String, Integer> map = list.stream().collect(Collectors.toMap(User::getName, User::getAge)); for (String key: map.keySet()) { System.out.println(key); } // 去重实现方法一 List<User> result = new LinkedList<>(); for (User user : list) { boolean b = result.stream().anyMatch(u -> u.name.equals(user.name)); if (!b) { result.add(user); } } result.forEach(System.out::println); // 利用HashSet实现list的去重 Set<User> set = new HashSet<>(list); set.forEach(System.out::println); } }
  • 相关阅读:
    HTTP协议详解(真的很经典)
    几点建议,让Redis在你的系统中发挥更大作用
    Redis能干啥?细看11种Web应用场景
    Java中使用Jedis操作Redis
    java的锁机制——synchronized
    web开发中的两把锁之数据库锁:(高并发--乐观锁、悲观锁)
    一分钟教你知道乐观锁和悲观锁的区别
    $^,$@,$?,$<,$(@D),$(@F) of makefile
    linux shared lib 使用与编译
    makefile learning
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/10085374.html
Copyright © 2020-2023  润新知