黑马程序员——(七)集合

来源:互联网 发布:搜狐出品的网络剧 编辑:程序博客网 时间:2024/05/21 01:57

-----------android培训java培训、java学习型技术博客、期待与您交流!------------

1)java集合概述

   为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),java提供集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有集合都类位于java.util包下。集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量);而集合里只能保存对象(实际上也是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。

Collection集合体系的继承树:

2)Collection

   Collection接口是List,Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。Collection定义了如下操作集合元素的方法:

boolean add(E e):确保此 collection 包含指定的元素(可选操作)。

boolean addAll(Collection<? extends E> c):将指定 collection 中的所有元素都添加到此 collection 中(可选操作)

void clear():移除此 collection 中的所有元素(可选操作)。

boolean contains(Object o):如果此 collection 包含指定的元素,则返回 true。

boolean containsAll(Collection<?> c):如果此 collection 包含指定 collection 中的所有元素,则返回 true。

boolean equals(Object o):比较此 collection 与指定对象是否相等。

int hashCode():返回此 collection的哈西值。

boolean isEmpty():如果此 collection 不包含元素,则返回 true。

Iterator<E> iterator():返回在此 collection 的元素上进行迭代的迭代器。

boolean remove(Object o):从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。

boolean removeAll(Collection<?> c):移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。

boolean retainAll(Collection<?> c):仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。

int size():返回此 collection 中的元素数。

Object[] toArray():返回包含此 collection 中所有元素的数组。

<T> T[]toArray(T[] a):返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

2)Set接口

   Set集合不允许包含相同的元素,如果试图把两个相同元素加入同一个Set集合,则添加操作失败,add方法返回false,且新元素不会被加入。Set集合判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不会接受这两个对象。反之,如果两个对象通过equals比较返回false,Set就会接受这两个对象(甚至这两个对象是同一个对象,Set也把它们当作是同一对象处理)。

  HashSet

  HashSet是Set接口的典型实现,大多数时候使用Set集合时就是使用这个实现类。HashSetanHash算法来存储集合中的元素,因此具有很好的存取和查找性能。HashSet具有以下的特点:

1:不能保证元素的排列顺序,顺序有可能发生变化。

2:HashSet不是同步的,如果多个线程同时访问一个HashSet,如果有2条或者2条以上线程同时修改了HashSet集合时,必须用代码保证其同步。

3:集合元素值可以是null。

  TreeSet

  TreeSet可以确保集合元素处于排序状态。与HashSet相比,TreeSet还提供了几个额外的方法:

Comparator comparator():返回当前Set使用的Comparator, 或者返回null,表示以自然方式排序。
Object first():返回集合中的第一个元素。
Object last():返回集合中最末一个元素。
SortedSet headSEt(toElement):返回此Set的子集,由小于toElement的元素组成。
SortedSet tailSet(fromElement):返回此Set的子集,由大于或等于fromElement的元素组成。
SortedSet subSet(fromElement,toElement):返回此Set的子集合,范围由fromElement(包含)到toElement(不包含)。

3)List接口

  List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。因为List集合默认按元素的添加顺序设置元素的索引。

  List的常用方法:

list.add(index,e)指定下标添加(添加后下标后的元素向后挪一位)。

list.remove(e):删除元素:返回是否删除。

list.remove(index):直接删除指定下标的元素(只删除找到的第一个相符合的元素)。

list.set(index,e):替换元素(替换掉指定下标的元素)。

list.get(index):取出元素。

list.clear():清空集合。

list.contains(e):判断集合中是否存在某个元素(存在返回true,不存在返回false)。

list.equals(list2):对比两个集合中的所有元素。

list.indexOf(e):得元素下标:元素存在则返回找到的第一个元素的下标,不存在则返回-1。

list.lastIndexOf(e):元素存在则返回找到的最后一个元素的下标,不存在则返回-1。

list.isEmpty():判断集合是否为空(空则返回true,非空则返回false)。

list.iterator():返回Iterator集合对象。

list.toString():将集合转换为字符串。

list.subList(fromIndex,toIndex):截取集合(从fromIndex开始在toIndex前结束,[fromIndex,toIndex))。

list.toArray():将集合转换为数组。

4)Map

  Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的Key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据。Map的Key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、确定的value。从Map中取出数据时,只要给出指定的key,就可以取出对应的value。

   Map的常用方法:

void clear():清空Map集合


boolean containsKey(Object key):判断指定的key是否存在。
boolean containsValue(Object value):判断指定的value是否存在。
Set<Map.Entry<K,V>> entrySet():将Map对象变为Set集合。
boolean equals(Object o):对象比较。
Object get(Object K):根据key获得value。
int hashCode():返回哈希码。
boolean isEmpty():判断集合是否为空。
Set<K> keySet():取得所有的key。
Object put(K key,V value):向集合中加入元素。
void putAll(Map<? extends K,extends V> t):将一个Map集合中的内容加入到别一个Map。
Object remove(Object key):根据key删除value。
int size():取得集合长度。
Collection<V> values():取得全部的value。
练习:创建ArrayList对象,添加5个元素,使用Iterator遍历输出。

public class Test{public static void main(String[] args) {// 调用用于输出的方法print();}// 添加一个方法并在其中创建ArrayList对象输出public static void print() {// 新建一个ArrayList对象并添加5个元素ArrayList<String> arr = new ArrayList<String>();arr.add("第1个");arr.add("第2个");arr.add("第3个");arr.add("第4个");arr.add("第5个");// 添加一个用于遍历的迭代器java.util.Iterator<String> it = arr.iterator();// 循环获取迭代器的下一个值while (it.hasNext()) {String str = it.next();System.out.println(str);}}}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0