guava之Lists、Maps


谷歌提供了guava包里面有很多的工具类,Lists和Maps集合工具,集合操作做了些优化提升

一、概述

1、静态工厂方法

  (1)Guava提供了能够推断泛型的静态工厂方法

  List<Person>   list = Lists.newArrayList();

  Map<keyType,Person> map = Maps.newLinkedHashMap();

  (2)用工厂方法模式,我们可以方便地在初始化时就指定起始元素

  Set(Type)  copySet = Sets.newHashSet(elements);

  List<String>  theseElements = Lists.newArrayList("alpha","beta","gamma");

  (3)通过为工厂方法命名,我们可以提高集合初始化大小的可读性

  List<Type> exactly100=Lists.newArrayListWithCapacity(100);

     List<Type> approx100=Lists.newArrayListWithExpectedSize(100);

     Set<Type> approx100Set=Sets.newHashSetWithExpectedSize(100);

 2、Lists案例

public class ListsTest {
public static void main(String[] args) {
List<String> list1 = Lists.newArrayList();
for (int i = 0; i < 10; i++) {
list1.add(i+"");
}
System.out.println("list1:"+list1); //传入多参数
List<String> list2 = Lists.newArrayList("1", "2", "3");
System.out.println("list2:"+list2); //传入数组
List<String> list3=Lists.newArrayList(new String[]{"22","33"});
System.out.println("list3:"+list3);
//传入集合
List<String> list4=Lists.newArrayList(list1);
System.out.println("list4:"+list4); //使用条件:你确定你的容器会装多少个,不确定就用一般形式的
//说明:这个容器超过10个还是会自动扩容,不用担心容量不够用,默认是分配一个容量为10的数组,不够将扩容
//整个来说的优点有:节约内存,节约时间,节约性能,代码质量提高
List<String> list=Lists.newArrayListWithExpectedSize(10);
//这个方法就是直接返回一个10的数组
List<String> list5=Lists.newArrayListWithCapacity(10); } }

三、Maps案例

public class MapsTest {
public static void main(String[] args) {
//1 Maps.newHashMap() 获得HashMap();
Map<Integer,Integer> map1= Maps.newHashMap();
for (int i = 0; i < 10; i++) {
map1.put(i,i);
}
System.out.println("map1:"+map1);
//输出:map1:{0=0, 1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9} //2、传入map1参数构建map
Map<Integer,Integer> map2 = Maps.newHashMap(map1);
map2.put(10,10);
System.out.println("map2:"+map2);
//输出 :map2:{0=0, 1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9, 10=10} //3、使用条件,你确定你的容器会装多少个,不确定就用一般形式的
//说明:这个容器超过3个还是会自动扩容,不用担心容量不够用,默认是分配一个容量为16的数组,不够将扩容
Map<Integer,Integer> map3 = Maps.newHashMapWithExpectedSize(3);
map3.put(1,1);
map3.put(2,2);
map3.put(3,3);
System.out.println(map3);
//输出: {1=1, 2=2, 3=3} //4、LinkedHashMap<K, V> 有序map
//Map<Integer,Integer> map4 = Maps.newLinkedHashMap();
//Map<Integer,Integer> map4 = Maps.newLinkedHashMapWithExpectedSize(11);
Map<Integer, Integer> map4 = Maps.newLinkedHashMap(map1);
map4.put(11, 11);
System.out.println("map3:" + map4);
//输出:map3:{0=0, 1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9, 10=10, 11=11} outMapKeyValue(map4); } /**
* 遍历map的四种方法
* @param map4
*/
private static void outMapKeyValue(Map<Integer,Integer> map4){
//1:通过Map.entrySet遍历key和value
for (Map.Entry<Integer, Integer> integerEntry : map4.entrySet()) {
System.out.println("key:"+integerEntry.getKey()+"value:"+integerEntry.getValue());
} //2:通过Map.entrySet使用iterator遍历key和value --不推荐,直接使用上面的for each循环替代此方法
Iterator<Map.Entry<Integer, Integer>> it = map4.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry = it.next();
System.out.println("key:"+entry.getKey()+"value:"+entry.getValue());
} //3,通过Map.keySet遍历key,根据key得到value
for (Integer integer : map4.keySet()) {
System.out.println("key:"+integer+"value:"+map4.get(integer));
}
//4通过Map.values遍历所有的value,但不能遍历key
for (Integer integer : map4.values()) {
System.out.println("value:"+integer);
}
}
}

java代码(9) ---guava之Lists、Maps的更多相关文章

  1. java代码之美(9)---guava之Lists、Maps

    guava之Lists.Maps 谷歌提供了guava包里面有很多的工具类,Lists和Maps集合工具,集合操作做了些优化提升. 1.概述 1.静态工厂方法 (1)Guava提供了能够推断范型的静态 ...

  2. 使用 Google Guava 美化你的 Java 代码

    文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMP ...

  3. java代码之美(3)---guava 复写Object常用方法

    guava 复写Object常用方法 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方 ...

  4. 使用 Google Guava 美化你的 Java 代码:1~4 【转】

    文章转载自:http://my.oschina.net/leejun2005/blog/172328 1.使用Google Collections,Guava,static imports编写漂亮代码 ...

  5. java代码(3)----guava复写Object常用方法

    guava复写Object常用方法 Guava是一个Google的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,字符串处理,I/O和验证的实用方法, 这些高质量的 ...

  6. 写Java代码的一些小技巧

    写Java代码有三年多了,遇到过很多坑,也有一些小小的心得.特地分享出来供各位学习交流.这些技巧主要涉及谷歌Guava工具类的使用.Java 8新特性的使用.DSL风格开发.代码封装等技巧. 一.nu ...

  7. Guava中Lists.partition(List, size) 方法懒划分/懒分区

    目录 Guava中Lists.partition(List, size) 方法懒划分/懒分区 背景 分析 总结 Guava中Lists.partition(List, size) 方法懒划分/懒分区 ...

  8. kettle 使用JAVA代码进行执行

    kettle 设计完成之后,可以在设计工具中进行调用,也可以使用java代码进行调用.   1.通过文件方式执行转换.   public static void runTransfer(String[ ...

  9. Linkedin工程师是如何优化他们的Java代码的(转)

    英文原文:LinkedIn Feed: Faster with Less JVM Garbage 最近在刷各大公司的技术博客的时候,我在Linkedin的技术博客上面发现了一篇很不错博文.这篇博文介绍 ...

随机推荐

  1. 性能测试之数据库监控分析工具Grafana+Prometheus

    使用到 Grafana+Prometheus+Mysql_exportor 使用Prometheus和Grafana,可以快速的构建我们性能测试的绝大多数的监控模型:数据库监控.服务器监控.Jvm监控 ...

  2. dedecms织梦建站后怎么防止被黑,加强安全漏洞措施?

    dedecms织梦建站后怎么防止被黑,加强安全漏洞措施? 很多人反映dedecms织梦网站被黑的情况,因为织梦相对来说漏洞还是挺多的,特别是新建设的站点,有些目录.文件该删的删,权限及安全都要设置,以 ...

  3. electron——通知

    所有三个操作系统都提供了应用程序向用户发送通知的手段. Electron允许开发者使用 HTML5 Notification API 发送通知,并使用当前运行的操作系统的本地通知 API 来显示它. ...

  4. 以前的一些word的整理

    LAMP部署 环境:虚拟机centos7 安装apache: 命令:yum install -y httpd (在执行这个命令时,可能会遇到运行yum时出现/var/run/yun.pid已被锁定,P ...

  5. Winform GDI+绘图二:绘制旋转太极图

    大家好,今天有时间给大家带来Winform自绘控件的第二部分,也是比较有意思的一个控件:旋转太极图. 大家可以停下思考一下,如果让你来绘制旋转的太极图,大家有什么样的思路呢?我今天跟大家展示一下,我平 ...

  6. Docker之镜像地址

    转载自https://www.cnblogs.com/doraman/p/9570891.html 官方docker hub 官方:https://hub.docker.com/explore/ 常用 ...

  7. 【图机器学习】cs224w Lecture 10 - PageRank

    目录 PageRank Problems Personalized PageRank 转自本人:https://blog.csdn.net/New2World/article/details/1062 ...

  8. 视口viewport

    一.viewport 1. 何为视口? 视口是浏览器显示网页的矩形区域. 2. 默认视口:模拟一个大约1000像素宽的视口. 理想视口:因设备.操作系统.浏览器而异,一般而言,手机宽带大约在300-5 ...

  9. 8086 8253 proteus仿真实验

    目录 实验内容 电路图 计数初值 关于8523的地址 关于灯的地址 代码内容 实验内容 电路图 计数初值 已知\(f_{clk0}=100khz\),所以\(T_{clk0}=\frac{1}{f_{ ...

  10. 浅谈JQuery

    一.什么是JQuery? JQuery是第三方开发的执行DOM操作的极简化的函数库. 执行DOM操作:JQuery还是在执行DOM操作 1.学习JQuery还是在学习DOM 2.五件事:增删改查 事件 ...