java 集合篇

来源:互联网 发布:温州市网络学堂 编辑:程序博客网 时间:2024/06/05 18:25
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不同:


  1. Map与Collection在集合框架中属并列存在
  2. Map存储的是键值对
  3. Map存储元素使用put方法,Collection使用add方法 
  4. Map集合没有直接取出元素的方法,而是  先转成Set集合,在通过迭代获取元素
  5.  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集合中常用类

  1. Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。 
  2. HashMap:线程不安全,速度快,允许存放null 键,null值。 
  3. TreeMap:对键进行排序,排序原理与TreeSet 相同。

0 0
原创粉丝点击