Java学习笔记-3-集合

集合

Collection 单列集合

集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合

单列集合类的根接口,用于存储一系列符合某种规则(抽象方法)的元素

它有两个重要的子接口,分别是java.util.Listjava.util.Set

List的特点是元素有序、元素可重复,有索引相反的是,Set的特点是元素无序,而且不可重复,无索引

List接口的主要实现类有java.util.ArrayListjava.util.LinkedListSet接口的主要实现类有java.util.HashSetjava.util.TreeSet

Collection继承体系:

Java学习笔记-3-集合_第1张图片

常用API

把给定的对象添加到当前集合中:

 public boolean add(E e) 

 

把给定的对象在集合中删除:

 public boolean remove(E e) 

 

清空集合中所有的元素:

 public void clear() 

 

把集合中的元素存储到数组:

 public Object[] toArray() 

 

判断集合中是否包含给定的对象:

 public boolean contains(E e) 

 

判断当前集合是否为空:

 public boolean isEmpty() 

 

返回集合中元素的个数:

 public int size() 

 

Iterator 迭代器接口

Iterator接口也是Java集合中的一员,但它与CollectionMap接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。

获取集合对应的迭代器,用来遍历集合中的元素:

 public Iterator iterator() 

 

迭代的概念:

Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出来。直到把集合中的所有元素全部取出。这种取出方式,专业术语称为迭代。

常用API

返回迭代的下一个元素(迭代器原理内置了一个指针,一开始在集合的外面,每调用一次next方法,指针向下移动一次,得到对应的元素):

 public E next() 

 

如果仍有元素可以迭代,则返回 true:

 public boolean hasNext() 

 

List 集合

(包含 ArrayList/LinkedList/Vector(静态of))

java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。元素的存入顺序和取出顺序一致。

常用API

插入,添加,将指定的元素,添加到该集合中的指定位置上:

public void add(int index, E element) 

 

移除列表中指定位置的元素, 返回的是被移除的元素:

 public E remove(int index) 

 

用指定元素替换集合中指定位置的元素,返回更新前的元素:

 public E set(int index, E element) 

返回集合中指定位置的元素:

 public E get(int index) 

 

ArrayList 集合类 

底层是大小可变的数组的实现,存储在内的数据称为元素,元素增删慢,查找快

在JDK 7后,右侧泛型的尖括号之内可以留空。

常用API

添加:

 list.add() 

 

返回指定索引的元素:

 list.get() 

 

返回集合中的元素个数:

 list.size() 

 

删索引,返元素(删元素返boolean):

 list.remove()       

 

通过索引来修改元素:

 list.set()  

 

判断集合是否有元素e,如果有,返回true:

 list.contains(e) 

 

LinkedList 类集合

(List 子类)    

java.util.LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合

在开发时,LinkedList集合也可以作为堆栈,队列的结构使用。

Java学习笔记-3-集合_第2张图片

常用API

将元素插入此列表的开头:

 public void addFirst(E e) 

 

将指定元素添加到此列表的结尾:

 public void addLast(E e) 

 

移除并返回列表的第一个元素:

 public E removeFirst() 

 

移除并返回此列表的最后一个元素:

 public E removeLast() 

 

返回此列表的第一个元素:

 public E getFirst() 

 

返回此列表的最后一个元素。

 public E getLast() 

 

如果不包含元素,返回true。

 public boolean isEmpty() 

 

堆栈弹出一个元素,底层就是removeFirst。

 public E pop()  

 

堆栈添加一个元素,底层就是addFirst。

 public void push(E e) 

 

Set 接口

(静态of) 

java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。

List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。

Set也是单列集合,取出元素的方式可以采用:迭代器、增强for(对于集合底层也是迭代器)。

 

HashSet

java.util.HashSetSet接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序有可能不一致)。java.util.HashSet底层的实现,其实是一个java.util.HashMap支持。

HashSet是根据对象的哈希值,来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。保证元素唯一性的方式依赖于:hashCodeequals方法。

LinkedHashSet

去重有序。

 

Map 接口 双列集合

(静态of)

Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。

Map中的集合,元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。

Collection中的集合称为单列集合,Map中的集合称为双列集合。需要注意的是,Map中的集合不能包含重复的键,值可以重复,每个键只能对应一个值。

Map常用子类

HashMap

 

存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

 

LinkedHashMap

HashMap下有个子类LinkedHashMap,存储数据采用了哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;

通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

Map接口常用API

键与值添加到Map集合中。增也是它,改也是它,键唯一,值覆盖,有覆盖就返回被覆盖的旧的值,没有覆盖返回null表示。

 public V put(K key, V value) 

 

键所对应的键值对元素在Map集合中删除,返回被删除元素的值。

 public V remove(Object key) 

 

键在Map集合中获取对应的值。如果没有键,没有值,绑定,返回null表示。

 public V get(Object key) 

 

获取到Map集合中所有的键值对对象的集合(Set集合)。即键值对类的对象的集合,存的是每一个键值对对象,模拟键值对,得到每一个键和每一个值的方法。

 public Set> entrySet() 

 

获取Entry对象中的键。

 get(K key) 

获取Entry对象中的值。

 getValue() 

 

得到键的Set集合。

 public Set keySet() 

你可能感兴趣的:(Java学习笔记-3-集合)