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的技术博客上面发现了一篇很不错博文.这篇博文介绍 ...
随机推荐
- 性能测试之数据库监控分析工具Grafana+Prometheus
使用到 Grafana+Prometheus+Mysql_exportor 使用Prometheus和Grafana,可以快速的构建我们性能测试的绝大多数的监控模型:数据库监控.服务器监控.Jvm监控 ...
- dedecms织梦建站后怎么防止被黑,加强安全漏洞措施?
dedecms织梦建站后怎么防止被黑,加强安全漏洞措施? 很多人反映dedecms织梦网站被黑的情况,因为织梦相对来说漏洞还是挺多的,特别是新建设的站点,有些目录.文件该删的删,权限及安全都要设置,以 ...
- electron——通知
所有三个操作系统都提供了应用程序向用户发送通知的手段. Electron允许开发者使用 HTML5 Notification API 发送通知,并使用当前运行的操作系统的本地通知 API 来显示它. ...
- 以前的一些word的整理
LAMP部署 环境:虚拟机centos7 安装apache: 命令:yum install -y httpd (在执行这个命令时,可能会遇到运行yum时出现/var/run/yun.pid已被锁定,P ...
- Winform GDI+绘图二:绘制旋转太极图
大家好,今天有时间给大家带来Winform自绘控件的第二部分,也是比较有意思的一个控件:旋转太极图. 大家可以停下思考一下,如果让你来绘制旋转的太极图,大家有什么样的思路呢?我今天跟大家展示一下,我平 ...
- Docker之镜像地址
转载自https://www.cnblogs.com/doraman/p/9570891.html 官方docker hub 官方:https://hub.docker.com/explore/ 常用 ...
- 【图机器学习】cs224w Lecture 10 - PageRank
目录 PageRank Problems Personalized PageRank 转自本人:https://blog.csdn.net/New2World/article/details/1062 ...
- 视口viewport
一.viewport 1. 何为视口? 视口是浏览器显示网页的矩形区域. 2. 默认视口:模拟一个大约1000像素宽的视口. 理想视口:因设备.操作系统.浏览器而异,一般而言,手机宽带大约在300-5 ...
- 8086 8253 proteus仿真实验
目录 实验内容 电路图 计数初值 关于8523的地址 关于灯的地址 代码内容 实验内容 电路图 计数初值 已知\(f_{clk0}=100khz\),所以\(T_{clk0}=\frac{1}{f_{ ...
- 浅谈JQuery
一.什么是JQuery? JQuery是第三方开发的执行DOM操作的极简化的函数库. 执行DOM操作:JQuery还是在执行DOM操作 1.学习JQuery还是在学习DOM 2.五件事:增删改查 事件 ...