关于Java中集合的简介
一、简介
Java将集合的接口与实现分离,集合类的基本接口是Collection接口和Map接口。以下为其之间的关系
集合与数组的比较:1.数组是定长的,不会自动扩充,而集合是可变的;
2.数组中可以存放基本数据类型和引用类型,而集合只能包含引用类型的对象。
二、Collection接口
Collection有两个子接口:List和Set。JDK 不提供此接口的任何实现:它提供更具体的子接口(如 Set 和 List)实现。
Collection有一个iterator方法,该方法用于返回一个实现了Iterator接口的对象(也称迭代器),Iterator是为遍历而设计,能够从集合中取出元素和删除元素,但是没有添加元素的
功能,我们可以使用这个迭代器对象依次访问集合内的元素。
关于Iterator接口,包含了3个方法
public interface Iterator<E>{
boolean hasNext();
E next();
void remove();
}
如图所示,初始时游标位于第一个元素的前面,通过调用next方法,游标就越过一个元素,并返回刚刚越过的那个元素的引用,但是如果到达了集合的末尾,next方法会抛出一个NoSuchElementException异常。因此,需要在调用next方法之前先调用hasNext方法,用于判断游标的下一位置是否还有元素。
remove方法将会删除上次调用next方法时返回的元素。
Set是无序的,元素不允许重复;List是有序的,元素允许重复。
无序是指元素存入顺序与集合内存放顺序不同;无重复是指两个对象obj1与obj2,如果obj1.equals(obj2)返回true,则认为obj1与obj2是重复的。
关于Set与List的区别:
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
List中常用的有ArrayList和Linkedlist,Set中常用的有HashSet。
ArrayList是线性顺序存储的,是一种线性表,相当于动态数组;Linkedlist由链表实现的,可以实现栈和队列。
HashSet以哈希表的形式存放元素,插入删除速度很快。
Collection中的方法如下:
三、Map接口
Map中的元素是以键值对(key/value)的形式存放的,在Map中,key值是唯一的,Map接口的常用方法有:
Map接口的实现类中常用的有HashMap和TreeMap,在Map中插入、删除和定位元素,HashMap是最好的选择。但如果要按顺序遍历键,那么TreeMap会更好。
上一篇: 套牢男人的心 你必须要知道这些