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. SpringMvc 你该知道如何在HandlerExceptionResolver中获取Model

    在项目开发中,我们通常通过参数的形式注入Model对象,如: @RequestMapping("/demo") public String demo(Model model) { ...

  2. Mybatis 注入全局参数

    在项目中使用mybatis作为dao层,大部分时间都需要使用到mybatis提供的动态sql功能,一般情况下所有的表都是在同一个数据库下的,进行数据操作时都是使用jdbc中默认的schema.但是如果 ...

  3. angular controller的使用

    在angular.js最常用的模块就是控制器了,通常我们会这样使用: var myAppModule = angular.module('myApp', []);   myAppModule.cont ...

  4. dokcer入门

    背景: 由于最近在做基于Headless chrome + Robotframework + Docker +Jenkins架构的web自动化测试的预研工作,其中涉及到web自动化持续集成,需要搭建自 ...

  5. jQuery的插件和跨域、ajax

    1. 插件: 也称组件 什么是: 拥有专属的HTML,CSS和js的独立页面区域 为什么: 重用! 何时: 只要一个功能/区域可能被反复使用时 如何: 3个来源: 1. 官方插件:jquery ui ...

  6. Json转化与ExtJS树(后台处理)

    一.JSON对格式化数据的操作: 1.导入依赖包: import org.json.JSONArray; import org.json.JSONException; import org.json. ...

  7. easyui API

    http://www.jeasyuicn.com/api/docTtml/index.htm

  8. 王艳 201771010127《面向对象程序设计(Java)》第四周学习总结

    第一部分:理论知识. 第四章:对象与类 4.1:类与对象的概念. 类:是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例. 对象:想要使用oop,一定要清楚对象的三个特性: 1)对象的行为:对 ...

  9. 201771010128王玉兰《面向对象程序设计(Java)第十四周学习总结》

    第一部分:理论知识总结: (1)Swing 设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 知晓的,经过分类编目的,代码设计经验的总结. 使用 ...

  10. 一、$HTML, HTTP,web综合问题

    1.前端需要注意哪些SEO 合理的title.description.keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title ...