文档章节

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

MATT0614
 MATT0614
发布于 2016/05/09 19:50
字数 333
阅读 337
收藏 17
点赞 2
评论 0
 @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
博文 34
码字总数 9510
作品 0
银川
程序员
Guava学习笔记:Google Guava 类库简介

Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这......

长平狐
2013/06/17
556
0
Google Guava 类库简介(1)

Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这......

十二缸帕萨特
2015/10/07
31
0
使用 Google Guava 美化你的 Java 代码:1~4

1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMPORTS 编写漂亮代码 写在前面: 以前在一个项目中用到过guava,当时匆匆用,也没细研究,今天偶然在occhina看到这个系列教程的翻译,感觉不错,介...

大数据之路
2013/10/28
0
7
Google Guava Collections 使用介绍

Google Guava Collections(以下都简称为 Guava Collections)是 Java Collections Framework 的增强和扩展。每个 Java 开发者都会在工作中使用各种数据结构,很多情况下 Java Collections F...

毒性逆转
2011/11/17
0
1
Java集合框架01-框架总览

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

x_coder
2017/11/26
0
0
Guava Collections使用介绍[超级强大]

功能列举 可以说 Java Collections Framework 满足了我们大多数情况下使用集合的要求,但是当遇到一些特殊的情况我们的代码会比较冗长,比较容易出错。Guava Collections 可以帮助你的代码更...

飞翼
2016/12/13
24
0
java中Final关键字和Immutable Class以及Guava的不可变对象

大纲 写这篇文章的起因 java中Final关键字 如何构建不可变对象 Guava中不可变对象和Collections工具类的unmodifiableSet/List/Map/etc的区别 实验代码 写这篇文章的起因 java项目在使用FindB...

敲代码猥琐男
2015/09/23
1K
0
Google Guava 笔记

一、引言 Guava 是 google 几个java核心类库的集合,包括集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common ...

qllinhongyu
2014/09/18
0
0
Java中的Comparator()与comparaTo()

1.为什么写? comparator 是javase中的接口,位于java.util包下,该接口抽象度极高,有必要掌握该接口的使用 大多数文章告诉大家comparator是用来排序,但我想说排序是comparator能实现的功能...

qq_39521554
05/09
0
0
Guava学习笔记 第6个记录(Immutable(不可变)集合)

不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客...

heroShane
2014/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

数据结构与算法2

一个数组的例子,实现查找,显示和删除的功能。 public class array {public static void main(String[] args){long[] arr;arr = new long[100];int nElems = 0;int j;...

沉迷于编程的小菜菜
11分钟前
0
0
Python3 基于 requests 批量下载图片

Python3 基于 requests 批量下载图片 import requestsheaders = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Encod......

leeyi
12分钟前
0
0
Sparkstreaming and Kafka

简介 Kafka 0.10的Spark Streaming集成设计与0.8 Direct Stream方法类似。 它提供了简单的并行性,Kafka分区和Spark分区之间的1:1对应关系,以及对偏移量和元数据的访问。 但是,由于较新的...

刺猬一号
16分钟前
0
0
java获取当前时间所在一周的周一和周日日期

/** * 当前时间所在一周的周一和周日时间 * @param time 当前时间 * @return */ public static Map getWeekDate(String time) { Map map = new HashedMap(); SimpleDateFormat sdf = new Si......

小弱鸡
44分钟前
0
0
Redis数据的导出和导入(dump和load方式)

网上有些文章已经不再适用,本人也是踩了些坑,在此记录下。 迁移redis数据一般有如下3种方式: 第三方工具redis-dump,redis-load aof机制,需要开启aof功能 rdb存储机制 这里介绍第一种方式...

iplusx
48分钟前
1
0
ElasticSearch 高亮显示大文档搜索结果

2016年12月,我们开始研究Ambar——一个文档搜索系统。Ambar使用ElasticSearch作为核心搜索引擎。 在Ambar开发的过程中,我们处理了很多与ES相关的问题,我们想分享我们得到的宝贵经验。让我...

九州暮云
今天
1
0
Python 使用 pywifi 模块 破解wifi密码

git https://github.com/awkman/pywifi 常见常量 from pywifi import const# Define interface status.IFACE_DISCONNECTED = 0IFACE_SCANNING = 1IFACE_INACTIVE = 2IFACE_CONNEC......

阿豪boy
今天
1
0
phpstorm使用Iedis

phpstorm的redis插件Iedis是真好用 看了网上挺多的文章,但是由于我系统还是ubuntu,就有点尴尬了,现在破解之后,留个笔记,即使自己之后有需要也可以很快翻阅 先下载资源 资源下载 zip压缩...

贤郎--均灵
今天
0
0
第三章 spring-bean之FactoryBeanRegistrySupport(4)

前言 从FactoryBeanRegistrySupport类的名字可以看出FactoryBeanRegistrySupport负责FactoryBean的注册与支持。如果想知道FactoryBean相关的资料,请阅读spring-bean中关于FactoryBean的解读...

鸟菜啊
今天
0
0
CentOS “Destination Host Unreachable”问题解决办法

挑战极速安装CentOS时遇到局域网主机不能通信的情况: [root@zjd network-scripts]# ping 8.8.8.8PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.64 bytes from 8.8.8.8: icmp_seq=1 ttl=......

wffger
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部