李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
容器深入研究--完整的容器分类法
Leefs
2020-01-03 AM
1753℃
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://lilinchao.com/archives/363.html
上一篇
字符串--扫描输入
下一篇
CentOS 7IP配置
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
微服务
Kibana
DataWarehouse
随笔
稀疏数组
Quartz
Spring
MyBatisX
GET和POST
FastDFS
HDFS
SpringCloud
Flink
Http
SQL练习题
Java工具类
JVM
Spark RDD
Java
并发线程
ClickHouse
Python
字符串
Netty
CentOS
Eclipse
Sentinel
Azkaban
Docker
SpringCloudAlibaba
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭