java8 转对象,Java8转Map,Java8转Llist

简介: java8 转对象,Java8转Map,Java8转Llist

1.准备数据

public static List<Persion> getData(){
        List<Persion> arrayList = new ArrayList<>();
        arrayList.add(new Persion("李四","20","男"));
        arrayList.add(new Persion("王麻子","30","男"));
        arrayList.add(new Persion("wangwu","10","女"));
        arrayList.add(new Persion("wangwu","10","女"));
        arrayList.add(null);
        return arrayList;
    }

2.List对象转Map

    public static void main(String[] args) {
        List<Persion> persions = getData();
        //list对象转 Map<String,String> name 是key,age是value。
        Map<String, String> stringMap = persions.stream().collect(Collectors.toMap(Persion::getName, Persion::getSex));
        System.out.println("stringMap:"+stringMap);
        // 结果:stringMap:{李四=男, 王麻子=男, wangwu=女}
        
    }

3.List对象转Map对象并去重

    public static void main(String[] args) {
        List<Persion> persions = getData();
        Map<String, Persion> stringMap = persions.stream().collect(Collectors.toMap(Persion::getName, Function.identity(), (key1, key2) -> key2));
        System.out.println("stringMap:"+stringMap);
        
 
    }
//输出:stringMap:{李四=Persion{name='李四', age='20', sex='男'}, 王麻子=Persion{name='王麻子', age='30', sex='男'}, wangwu=Persion{name='wangwu', age='10', sex='女'}}
//收集对象本身并转换
        Map<String, Persion> persionMap2 = persions.stream().collect(Collectors.toMap(Persion::getName, v -> new Persion(v.getName(),"","")));

4.List对象转List转Set转List<String> 都类似

    public static void main(String[] args) {
        List<Persion> persions = getData();
 
        List<Persion> persions1 = persions.stream().collect(Collectors.toList());
//        list对象转list对象的属性
        Set<String> collect2 = persions.stream().map(Persion::getName).collect(Collectors.toSet());
        System.out.println("stringMap:"+collect2);
        // 结果:stringMap:stringMap:[李四, 王麻子, wangwu]
 
    }

5.多个字段排序 第一个字段降序,第二个字段升序

    public static void main(String[] args) {
        List<Persion> persions = getData();
        List<Persion> persions1 = persions.stream().sorted(Comparator.comparing(Persion::getAge).reversed().thenComparing(Persion::getAge)).collect(Collectors.toList());
        System.out.println("stringMap:"+persions1);
        
 
    }
 
// 结果:stringMap:[Persion{name='王麻子', age='30', sex='男'}, Persion{name='李四', age='20', sex='男'}, Persion{name='wangwu', age='10', sex='女'}, Persion{name='wangwu', age='10', sex='女'}]

6.根据某个字段分组

  public static void main(String[] args) {
        List<Persion> persions = getData();
        Map<String, List<Persion>> collect3 = persions.stream().collect(Collectors.groupingBy(Persion::getAge));
        System.out.println("stringMap:"+collect3);
       
    }
// 结果:stringMap:{30=[Persion{name='王麻子', age='30', sex='男'}], 20=[Persion{name='李四', age='20', sex='男'}], 10=[Persion{name='wangwu', age='10', sex='女'}, Persion{name='wangwu', age='10', sex='女'}]}

7.去除空元素

    public static void main(String[] args) {
        List<Persion> persions = getData();
        boolean removeAll = persions.removeAll(Collections.singleton(null));
        System.out.println("stringMap:"+removeAll);
        System.out.println("persions:"+persions);
        
 
    }
//结果:stringMap:true
//persions:[Persion{name='李四', age='20', sex='男'}, Persion{name='王麻子', age='30', sex='男'}, Persion{name='wangwu', age='10', sex='女'}, Persion{name='wangwu', age='10', sex='女'}]
相关文章
|
29天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
2月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
48 17
|
27天前
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
30 1
|
1月前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
2月前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
64 3
|
2月前
|
存储 缓存 安全
在Java的Map家族中,HashMap和TreeMap各具特色
【10月更文挑战第19天】在Java的Map家族中,HashMap和TreeMap各具特色。HashMap基于哈希表实现,提供O(1)时间复杂度的高效操作,适合性能要求高的场景;TreeMap基于红黑树,提供O(log n)时间复杂度的有序操作,适合需要排序和范围查询的场景。两者在不同需求下各有优势,选择时需根据具体应用场景权衡。
32 2
|
1月前
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
32 0
|
2月前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
31 1
|
4月前
|
安全 Java
【Java集合类面试三】、Map接口有哪些实现类?
这篇文章介绍了Java中Map接口的几种常用实现类:HashMap、LinkedHashMap、TreeMap和ConcurrentHashMap,以及它们适用的不同场景和线程安全性。
|
6月前
|
存储 算法 Java
滚雪球学Java(65):深入理解Java中的Map接口:实现原理剖析
【6月更文挑战第19天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
47 3
滚雪球学Java(65):深入理解Java中的Map接口:实现原理剖析