您的位置:首页 > 编程语言 > Java开发

java 集合篇

2015-06-23 15:36 399 查看
java语言的java.util包中提供了一些集合类。这些集合类又被称为容器。集合类与数组不同之处是,数组的长度是固定的,集合的长度是可变的;数组用来存放基本类型的数据,集合用来存放对象的引用。

常用的集合有:

List集合;

Set集合;

Map集合;

其中List与Set实现了Collection接口。各接口还提供了不同的实现类。

以下是集合继承图:



为什么出现集合类?

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。



集合类的特点 :

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

集合关系的分析:



集合框架中的常用接口

Collection接口有两个子接口:

List(列表) ,Set(集)

List:可存放重复元素,元素存取是有序的。

Set:不可以存放重复元素,元素存取是无序的。



List接口中常用类:

Vector:线程安全,但速度慢,已被ArrayList替代。

ArrayList:线程不安全,查询速度快。

LinkedList:链表结构,增删速度快。



取出LIst集合中元素的方式:

get(int index):通过脚标获取元素。

iterator():通过迭代方法获取迭代器对象。

迭代是取出集合中元素的一种方式。因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。

iterator用法:(用之前写的例子)

//实例数组,添加数据
ArrayList<String>  alist = new ArrayList<String>();
alist.add("a");
alist.add("b");
alist.add("c");
alist.add("d");
alist.add("f");
//因为迭代器的使用需要返回一个iterator,所以要声明一个iterator。
Iterator<String> iterator = alist.iterator();
//判断条件,判断是否还有数据,如有,则执行循环体。
while(iterator.hasNext()){
//将下一个数据赋值给result,输出
String result = iterator.next();
System.out.println(result);


迭代注意事项:

迭代器在Collcection接口中是通用的,它替代了Vector类中的Enumeration(枚举)。

迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。

迭代器的next方法返回值类型是Object,所以要记得类型转换。



Set接口中常用的类:

HashSet:线程不安全,存取速度快。

TreeSet: 线程不安全,可以对Set集合中的 元素进行排序。

Set集合元素唯一性原因

HashSet:通过equals方法和hashCode 方法来保证元素的唯一性。

TreeSet:通过compareTo或者compare 方法中的来保证元素的唯一性。元素是以二叉树的形式存放的。

Map集合



Map与Collection不同:

Map与Collection在集合框架中属并列存在
Map存储的是键值对
Map存储元素使用put方法,Collection使用add方法
Map集合没有直接取出元素的方法,而是 先转成Set集合,在通过迭代获取元素
Map集合中键要保证唯一性

Map集合存储于取出元素的方式

put( key k , value v)向集合中添加置顶的key与value的映射关系

get( Object key) 如果存在指定的键对象,则返回该对象对应的值,否则返回NULL。

Map集合的特点:

Map接口提供了将键映射到值的对象,一个映射不能包含重复的键。

每个键最多只能映射到一个值。

Map集合中元素是通过key、value进行存储的,要获取集合中指定key值或value值,需要先通过相应的方法获取key集合或value集合,再遍历key集合或value集合获取指定值。



Map集合中常用类

Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
HashMap:线程不安全,速度快,允许存放null 键,null值。
TreeMap:对键进行排序,排序原理与TreeSet 相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: