java代码(9) ---guava之Lists、Maps
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的更多相关文章
- java代码之美(9)---guava之Lists、Maps
guava之Lists.Maps 谷歌提供了guava包里面有很多的工具类,Lists和Maps集合工具,集合操作做了些优化提升. 1.概述 1.静态工厂方法 (1)Guava提供了能够推断范型的静态 ...
- 使用 Google Guava 美化你的 Java 代码
文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMP ...
- java代码之美(3)---guava 复写Object常用方法
guava 复写Object常用方法 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方 ...
- 使用 Google Guava 美化你的 Java 代码:1~4 【转】
文章转载自:http://my.oschina.net/leejun2005/blog/172328 1.使用Google Collections,Guava,static imports编写漂亮代码 ...
- java代码(3)----guava复写Object常用方法
guava复写Object常用方法 Guava是一个Google的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,字符串处理,I/O和验证的实用方法, 这些高质量的 ...
- 写Java代码的一些小技巧
写Java代码有三年多了,遇到过很多坑,也有一些小小的心得.特地分享出来供各位学习交流.这些技巧主要涉及谷歌Guava工具类的使用.Java 8新特性的使用.DSL风格开发.代码封装等技巧. 一.nu ...
- Guava中Lists.partition(List, size) 方法懒划分/懒分区
目录 Guava中Lists.partition(List, size) 方法懒划分/懒分区 背景 分析 总结 Guava中Lists.partition(List, size) 方法懒划分/懒分区 ...
- kettle 使用JAVA代码进行执行
kettle 设计完成之后,可以在设计工具中进行调用,也可以使用java代码进行调用. 1.通过文件方式执行转换. public static void runTransfer(String[ ...
- Linkedin工程师是如何优化他们的Java代码的(转)
英文原文:LinkedIn Feed: Faster with Less JVM Garbage 最近在刷各大公司的技术博客的时候,我在Linkedin的技术博客上面发现了一篇很不错博文.这篇博文介绍 ...
随机推荐
- SpringMvc 你该知道如何在HandlerExceptionResolver中获取Model
在项目开发中,我们通常通过参数的形式注入Model对象,如: @RequestMapping("/demo") public String demo(Model model) { ...
- Mybatis 注入全局参数
在项目中使用mybatis作为dao层,大部分时间都需要使用到mybatis提供的动态sql功能,一般情况下所有的表都是在同一个数据库下的,进行数据操作时都是使用jdbc中默认的schema.但是如果 ...
- angular controller的使用
在angular.js最常用的模块就是控制器了,通常我们会这样使用: var myAppModule = angular.module('myApp', []); myAppModule.cont ...
- dokcer入门
背景: 由于最近在做基于Headless chrome + Robotframework + Docker +Jenkins架构的web自动化测试的预研工作,其中涉及到web自动化持续集成,需要搭建自 ...
- jQuery的插件和跨域、ajax
1. 插件: 也称组件 什么是: 拥有专属的HTML,CSS和js的独立页面区域 为什么: 重用! 何时: 只要一个功能/区域可能被反复使用时 如何: 3个来源: 1. 官方插件:jquery ui ...
- Json转化与ExtJS树(后台处理)
一.JSON对格式化数据的操作: 1.导入依赖包: import org.json.JSONArray; import org.json.JSONException; import org.json. ...
- easyui API
http://www.jeasyuicn.com/api/docTtml/index.htm
- 王艳 201771010127《面向对象程序设计(Java)》第四周学习总结
第一部分:理论知识. 第四章:对象与类 4.1:类与对象的概念. 类:是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例. 对象:想要使用oop,一定要清楚对象的三个特性: 1)对象的行为:对 ...
- 201771010128王玉兰《面向对象程序设计(Java)第十四周学习总结》
第一部分:理论知识总结: (1)Swing 设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 知晓的,经过分类编目的,代码设计经验的总结. 使用 ...
- 一、$HTML, HTTP,web综合问题
1.前端需要注意哪些SEO 合理的title.description.keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title ...