介绍Java集合类(Collections)

开发 后端
本文介绍了java.util下的接口Collection和集合类Collections的相关知识,供大家参考。

在介绍Java集合类之前,首先介绍一下Java集合的概念。

Java集合Collection接口

Collection 是任何对象组,元素各自独立,通常拥有相同的套用规则。Set List由它派生。

基本操作:

增加元素add(Object obj); addAll(Collection c);

删除元素 remove(Object obj); removeAll(Collection c);

求交集 retainAll(Collection c);

删除元素 remove(Object obj); removeAll(Collection c);

求交集 retainAll(Collection c);

访问/遍历集合元素的好办法是使用Iterator接口(迭代器用于取代Enumeration)

  1. Public interface Iterator{  
  2.  
  3.     Public Boolean hasNext(};  
  4.  
  5.      Public Object next(};  
  6.  
  7.      Public void remove(};  
  8.  

一、set

无重复、无序

HashSet-基于散列表的集,加进散列表的元素要实现hashCode()方法以判断是否为同一个对象,无顺序、无重复。

LinkedHashSet-在HashSet中加入了链表数据结构,有顺序

TreeSet-可以排序,需要实现Comparable接口,并实现其compareTo()方法,以排序。

二、List

有重复、有序

ArrayList(数组表)- 有重复、有顺序。类似于Vector,都用于缩放数组维护集合。区别:

1.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

2.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

LinkedList(链表)-是双向链表,适合变更很多的List。

用在FIFO,用addList()加入元素 removeFirst()删除元素

用在FILO,用addFirst()/removeLast()

ListIterator提供双向遍历next() previous(),可删除、替换、增加元素

三、Map

用于关键字/数值对,较高的存取性能。不允许重复的key,但允许重复的Value。

处理Map的三种集合

关键字集KeySet() 数值集value()   项目集enrySet()

四个具体版本

HashMap-散列表的通用映射表,无序,可在初始化时设定其大小,自动增长。

LinkedHashMap-扩展HashMap,对返回集合迭代时,维护插入顺序

WeakHashMap-基于弱引用散列表的映射表,如果不保持映射表外的关键字的引用,则内存回收程序会回收它

TreeMap-基于平衡树的映射表 

四、Java集合类collections

用于同步集合,还能改变集合只读方式的类

e.g.:

  1. Map mp=new HashMap();  
  2.  
  3. mp=Collections.synchronizedMap(mp); //生成线程安全的映射表  
  4.  
  5. mp=Collections.unmodifiableMap(mp); //生成只读映射表 

五、Comparable 自然顺序的排序类 Comparator 面向树的集合排序类

六、Vector类

Vector,可以动态增加容量。对它的操作简要如下

七、Enumeration接口 

八、Dictionary类

字典。关键字/数值方式存取数据,如果映射没有此关键字,取回null。

九、Hashtable类

Dictionary结构的具体实现。 

1、Collection 和 Collections的区别。

Collections是个java.util下的类,它包含有各种有关java集合操作的静态方法。 

Collection是个java.util下的接口,它是各种java集合结构的父接口

2、List, Set, Map是否继承自Collection接口? List,Set是 Map不是

3、ArrayList和Vector的区别。

(1).同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

(2).数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

4、HashMap和Hashtable的区别

(1).历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

(2).同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

(3).值:只有HashMap可以让你将空值作为一个表的条目的key或value

Java集合类的相关内容就介绍到这里。

【编辑推荐】

  1. 多核时代考验Java代码编写习惯
  2. JSR通过JavaEE 6依赖注入标准 各方观点不一
  3. Sun发布JDK 7早期预览版 JVM性能大幅提升
  4. 来自一年前的预测:Java平台与死亡相去甚远
  5. Java新型垃圾回收器G1深入探索
责任编辑:book05 来源: 新浪博客
相关推荐

2009-05-08 09:46:37

微软C#集合对象

2011-07-11 11:02:12

JAVA集合框架

2021-08-16 09:35:34

Collections Java开发

2012-03-19 09:57:09

JavaArrayList

2012-05-02 10:47:51

JavaJava集合框架

2010-03-16 14:58:15

Java类加载器

2009-10-20 09:39:04

VB.NET Butt

2024-02-23 10:10:00

List接口Java

2009-12-21 15:58:19

ADO.NET集合

2009-10-27 14:50:25

VB.NET控件数组

2019-05-07 11:02:55

Java开发代码

2009-08-12 09:41:28

C# Director

2009-09-03 15:57:11

C# SystemMe

2009-09-15 13:20:34

LINQ DataCo

2011-06-22 09:58:04

QT 集合类

2010-02-24 17:47:05

WCF集合类型

2011-07-12 10:43:20

JAVA类加载

2009-11-09 14:15:17

WCF集合类型

2011-07-12 10:24:17

类加载反射

2009-09-25 17:19:28

Hibernate持久
点赞
收藏

51CTO技术栈公众号