李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
容器深入研究--完整的容器分类法
Leefs
2020-01-03 AM
1427℃
0条
# 容器深入研究--完整的容器分类法 ### 前言 本篇开始Java编程思想第17章的学习,接下来将对容器有一个更深层次的理解。 ### 概述 **Java容器类库简化图:** ![Java容器分类简化图.png][1] **1. 图的解释** **点线框**表示接口,**实线框**表示普通的(具体的)类。带有**空心箭头**的点线表示一个特定的类实现了一个接口,**实心箭头**表示某个类可以生成箭头所指类的对象 **2. Java容器详细图说明** (1)**Collection**:一个独立元素的序列,这些元素都服从一条或多条规则。(注:Collection其实就是将一组数据对象按照**一维线性**的方式组织起来)List必须按照插入的顺序保存元素,而set不能有重复元素。Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。 (2)**Map:**一组成对的“键值对”对象,允许你使用键来查找值。(注:Map其实是将键与值形成的**二元组**按照**一维线性**的方式组织起来,这里值得注意的是值可以使一个Collection或者Map,即嵌套结构,如:Map
>,Map
>)从另一个角度来考虑Map,其实Map相当于ArrayList或者更简单的数组的一种扩展、推广。在数组中我们可以利用下标即数字访问数组当中的不同元素,那么数字与对象之间形成了一种关联,那么如果将这个数字的概念扩展成为对象,那同样的我们可以将对象与对象之间关联起来。即Map,也称为**映射表、关联数组、字典**允许我们使用一个对象来查找某个对象。 (3)Queue接口(LinkedList已经为实现该接口做了修改)及其实现PriorityQueue和各种风格的BlockingQueue。 (4)ConcurrentMap接口及其实现ConcurrentHashMap,用于多线程机制 (5)CopyOnWriteArrayList和CopyOnWriteArraySet,用于多线程机制 (6)EnumSet和EnumMap,为使用enum而设计的set和map的特殊实现 (7)在Collections类中的多个便利方法 ### 填充容器 **代码示例** ```java class StringAddress{ private String s; public StringAddress(String s){ this.s = s; } public String toString() { return super.toString() + " " + s; } } public class FillingLists { public static void main(String[] args) { List
list = new ArrayList
( Collections.nCopies(4,new StringAddress("Hello")) ); System.out.println(list); Collections.fill(list,new StringAddress("World !")); System.out.println(list); } } ``` **运行结果** ```java [ThinkInJava.ContainerDepth.StringAddress@1b6d3586 Hello, ThinkInJava.ContainerDepth.StringAddress@1b6d3586 Hello, ThinkInJava.ContainerDepth.StringAddress@1b6d3586 Hello, ThinkInJava.ContainerDepth.StringAddress@1b6d3586 Hello] [ThinkInJava.ContainerDepth.StringAddress@4554617c World !, ThinkInJava.ContainerDepth.StringAddress@4554617c World !, ThinkInJava.ContainerDepth.StringAddress@4554617c World !, ThinkInJava.ContainerDepth.StringAddress@4554617c World !] ``` **方法说明** > **public static
void fill(List super T> list, T obj)** 方法是用来取代所有指定的列表中具有指定元素的元素。 > > **参数** > > list--这是被填充有指定的元素的列表。 > > obj--这是用于填充指定列表中的元素。 > > **异常** > > `UnsupportedOperationException`--这被抛出,如果指定列表或其列表迭代器不支持set操作。 > public static
List
nCopies(int n, T o):方法用于返回一个不可变列表组成的n个拷贝的指定对象 > > **参数** > > n-- 在返回列表中元素的个数。 > > o-- 在返回列表中反复出现的元素。 > > **返回值** > > 方法调用返回的不可变列表组成的n个拷贝的指定对象。 > > **异常** > > `IllegalArgumentException`-- 如果 n < 0 此异常被抛出. 第一种是使用Collections.nCopies创建传递给构造器的List。所有引用都被设置为指向相同的对象,Collection.fill被调用之后也是如此,fill方法的用处更有限,因为他只能替换已经在List中存在的元素,而不能添加新的元素。 *附:[参考文章链接](https://www.yiibai.com/java/util/collections_fill.html)* [1]: https://lilinchao.com/usr/uploads/2020/01/3312108284.png
标签:
Java
,
Java编程思想
,
容器深入研究
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://www.lilinchao.com/archives/363.html
上一篇
字符串--扫描输入
下一篇
CentOS 7IP配置
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
机器学习
序列化和反序列化
Kibana
gorm
Eclipse
Stream流
稀疏数组
VUE
锁
JavaSE
Java编程思想
Hive
Linux
散列
数据结构和算法
Filter
Shiro
Azkaban
Thymeleaf
Jquery
Python
Java工具类
HDFS
JVM
Nacos
Elastisearch
DataWarehouse
BurpSuite
JavaWeb
国产数据库改造
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞