文档章节

利用google工具类实现对list集合分组

MATT0614
 MATT0614
发布于 2016/05/09 19:50
字数 333
阅读 447
收藏 17
 @org.junit.Test
    public void testTest6() {
        Person p1 = new Person("a",10,"男","china");
        Person p2 = new Person("b",11,"女","japan");
        Person p3 = new Person("c",12,"男","japan");
        Person p4 = new Person("d",14,"男","USA");
        Person p5 = new Person("e",14,"女","china");
        List<Person> persons = new ArrayList<>();
        persons.add(p1);
        persons.add(p2);
        persons.add(p3);
        persons.add(p4);
        persons.add(p5);
        ImmutableSet digits = ImmutableSet.of(persons.toArray());
        Function<Person, String> sex = new Function<Person, String>() {
            @Override
            public String apply(Person person) {
                return person.getSex();
            }
        };
        ImmutableListMultimap<String, Person> sexList = Multimaps.index(digits, sex);

        ImmutableListMultimap ageList = Multimaps.index(digits, new Function<Person, Integer>() {
            @Override
            public Integer apply(Person person) {
                return person.getAge();
            }
        });

        ImmutableListMultimap countryList = Multimaps.index(digits, new Function<Person, String>() {
            @Override
            public String apply(Person person) {
                return person.getContry();
            }
        });
        System.out.println("按性别分组 = " + sexList);
        System.out.println("按年龄分组 = " + ageList);
        System.out.println("按国家分组 = " + countryList);

        /** 结果
         * 按性别分组 = {男=[Person@44d03877, Person@215750e4, Person@6b7fb9d5], 女=[Person@422b2fec, Person@e818616]}
         * 按年龄分组 = {10=[Person@44d03877], 11=[Person@422b2fec], 12=[Person@215750e4], 14=[Person@6b7fb9d5, Person@e818616]}
         * 按国家分组 = {china=[Person@44d03877, Person@e818616], japan=[Person@422b2fec, Person@215750e4], USA=[Person@6b7fb9d5]}
         */
        //求性别为男的集合
        System.out.println("sexList = " + sexList.get("男"));
        //求年龄为14岁的集合
        System.out.println("ageList = " + ageList.get(14));
        //求国籍日本的集合
        System.out.println("countryList = " + countryList.get("japan"));
        /**
         * 结果
         * sexList = [Person@e818616, Person@789caeb2, Person@769165fa]
         * ageList = [Person@769165fa, Person@43be3ce6]
         * countryList = [Person@598a15ca, Person@789caeb2]
         * 以上结果就是根据返回的map得到的集合数据。
         * 可以把结果用List<Person> 保存。
         * List<Person> personMan = sexList.get("男");
         */
    }

 

© 著作权归作者所有

共有 人打赏支持
MATT0614
粉丝 6
博文 39
码字总数 10932
作品 0
银川
程序员
私信 提问
java8 快速实现List转map 、分组、过滤等操作

  利用java8新特性,可以用简洁高效的代码来实现一些数据处理。 定义1个Apple对象: 添加一些测试数据: 1、分组 List里面的对象元素,以某个属性来分组,例如,以id分组,将id相同的放在一...

rechardchensir
08/25
0
0
【java代码之美】---guava之Immutable(不可变)集合

Immutable(不可变)集合 一、概述 guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现,暂时不展开。Collections是jdk提供的一个工具类。 Guava中不可变对象和C...

雨点的名字
08/02
0
0
[C#] LINQ之GroupBy

声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢! 一、先准备要使用的类: 1、Person类: class Person 2、准备要使用的List,用于分组(GroupBy): List personList = new List 二、...

cnc
10/24
0
0
Java集合框架01-框架总览

本节摘要:从整体概述Java集合框架 一、Java集合框架架构图 Java集合框架是Java为开发者提供的工具类,集合框架被放置在 java.util.* 包下面,这些工具类从更高层面为开发者提供了数组、链表...

x_coder
2017/11/26
0
0
Guava 教程4-条件,多重映射和分片

在本系列博客的前三章,我们大概介绍了Google的Guava类库和Collections类库,作为一名Java开发人员,相信你会从使用这些类库,进而来减少在你项目中使用样板文件的数量而获益。在本系列博客的...

JoeyBlue
2013/02/19
3.9K
6

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
21分钟前
0
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
25分钟前
43
3
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
3
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部