Fork me on GitHub

容器主要类型的区分

  在学校的时候对Java容器的知识不太熟,或许是上课打瞌睡去了吧。最近重温了一下,写篇博客让自己记得更深一点。

容器的基本概念

Java 容器类类库的概念是“保存对象”,通常将其划分为两个不同的概念:

  1. Collection: 一个独立元素的序列,这些元素都服从一条或多条规则。List 必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照排队规则来确定能够对象产生的顺序(通常与它们被插入的顺序相同)。
  2. Map: 一组成对的“键值对”对象,允许你使用键来查找值。映射表允许我们使用另一个对象来查找某个对象,它也被成为“关联数组”,因为它将某些对象与另外一些对象关联在一起;或者被称为“字典”,因为你可以使用键对象来查找值对象。Map是强大的编程工具。

容器中的几种不同的存贮方式

先来看一个小例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class PrintingContainers {
public static Collection fill(Collection<String> collection){
collection.add("Snow");
collection.add("White");
collection.add("Star");
collection.add("Wars");
return collection;
}
public static Map fill(Map<String,String> map){
map.put("Snow","Tom");
map.put("White","Jerry");
map.put("Star","Jack");
map.put("Wars","Angle");
return map;
}
public static void main(String[] args){
System.out.println(fill(new ArrayList<String>()));
System.out.println(fill(new LinkedList<String>()));
System.out.println(fill(new HashSet<String>()));
System.out.println(fill(new LinkedHashSet<String>()));
System.out.println(fill(new TreeSet<String>()));
System.out.println(fill(new HashMap<String,String>()));
System.out.println(fill(new TreeMap<String,String>()));
System.out.println(fill(new LinkedHashMap<String,String>()));
}
}

代码运行的结果为:

以上代码展示了Java容器类库中的两种主要类型,它们的区别在于容器中每个“槽”保存的元素的个数。Collection在每个“槽”中只能存贮一个元素。
此类容器包括:List,它已特定的顺序保存一组元素;Set,元素之间不能重复;Queue,只允许在容器的一端插入对象,并从另外一端移除对象。Map在每个槽中存贮了两个对象,即一个键值对。

上面的代码中首先利用fill()方法给所有类型的Collection容器添加元素add()方法。fill()方法可以作用于所有类型的Collection。

ArrayList和LinkedList都是List类型,两者都属于可伸缩数组,可以动态的改变数组的长度。从输出的结果可以看出,它们都是按照被插入的顺序来保存元素。两者的不同之处不仅在于执行某些类型的操作时的性能,而且LinkedList包含的操作也多余ArrayList。

本文标题:容器主要类型的区分

文章作者:Jeremy

发布时间:2018年01月03日 - 20:01

最后更新:2018年04月19日 - 17:04

原始链接:http://yoursite.com/2018/01/03/容器主要类型的区分/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------
你的支持是我最大的动力