A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© np1996 中级黑马   /  2017-10-15 00:25  /  1125 人查看  /  3 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么会出现集合类:
Java语言的java.util包中提供了一些集合类,这些集合类又被称为容器。提到容器不难会想到数组,集合类与数组不同之处是,数组的长度是固定的,集合的长度是可变的;数组用来存放基本类型的数据,集合用来存放对象的引用。常用的集合有List集合、Set集合、Map集合,其中List与Set实现了Collection接口。各接口还提供了不同的实现类。

Collection接口是层次结构中的根接口。构成Collection的单位,被称之为元素。Collection接口通常不能直接使用,但该接口提供了添加元素、删除元素、管理数据的方法。由于List接口与Set接口都继承了Collection接口,因此这些方法对List集合与Set集合是通用的。


Collection中的常用功能
boolean add(Object e): 向集合中添加元素
void clear():清空集合中所有元素
boolean contains(Object o):判断集合中是否包含某个元素
boolean isEmpty():判断集合中的元素是否为空
boolean remove(Object o):根据元素的内容来删除某个元素
int size():获取集合的长度
Object[] toArray():能够将集合转换成数组并把集合中的元素储到数组中

List
List接口继承了Collection接口,因此包含Collection中的所有方法。
List接口中适合与自身的方法都与索引有关。
List集合以线性方式存处对象,所以可以通过索引进行操作。
A:有序的(存储和读取的顺序是一致的)
B:有整数索引
C:允许重复的
List接口的常用实现类有ArrayList与LinkedList。
List常用
void add(int index, E element) :将元素添加到index索引位置上
E get(int index) :根据index索引获取元素
E remove(int index) :根据index索引删除元素
E set(int index, E element):将index索引位置的的元素设置为element

ArrayList
ArrayList类实现了可变的数组,允许所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问。缺点是向指定的索引位置插入对象或删除对象的速度较慢。
ArrayList常用
add(E e) : 添加元素
add(int index,E element):  在指定的索引处添加一个元素
获取元素  public E get(int index):返回指定索引处的元素
集合长度  public int size():返回集合中的元素的个数
删除元素
public boolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引处的元素,返回被删除的元素
修改元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素

LinkedList
LinkedList类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象,需要向集合中插入、删除对象时,使用LinkedList类实现的List集合的效率较好;但对于随机访问集合中的对象,使用LinkedList类实现List集合的效率较慢。

LinkedList常用

void addFirst(E e) :向链表的头部添加元素
void addLast(E e):向链表的尾部添加元素
   E getFirst():获取链头的元素,不删除元素
E getLast():获取链尾的元素,不删除元素
E removeFirst():返回链头的元素并删除链头的元素
E removeLast():返回链尾的元素并删除链尾的元素

Set
Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合中,但Set集合中不能包含重复对象。Set集合由Set接口和Set接口的实现类组成。Set接口继承了Collection接口,因此包含Collection接口的所有方法。

    A:存入集合的顺序和取出集合的顺序不一致
   B:没有索引
C:存入集合的元素没有重复

Map
Map接口提供了将key映射到值的对象。一个映射不能包含重复的key,每个key最多只能映射到一个值。Map接口中同样提供了集合的常用方法。
Map接口常用的实现类有HashMap和TreeMap。建议使用HashMap类实现Map集合,因为由HashMap类实现的Map集合对于添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行快速查找;而TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象也存在一定的顺序,应该使用TreeMap类实现Map集合。
Map常用
映射功能:
   V put(K key, V value) :以键=值的方式存入Map集合
获取功能:
   V get(Object key):根据键获取值
int size():返回Map中键值对的个数
判断功能:        
boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对
   boolean containsValue(Object value):判断Map集合中是否包含值为value键值对
boolean isEmpty():判断Map集合中是否没有任何键值对
删除功能:
   void clear():清空Map集合中所有的键值对
   V remove(Object key):根据键值删除Map中键值对
遍历功能:
Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回
Set<K> keySet() :将Map中所有的键装到Set集合中返回
Collection<V> values():返回集合中所有的value的值的集合



Collection
Collection和Collections有什么区别?
        Collection是集合体系的最顶层,包含了集合体系的共性
        Collections是一个工具类,方法都是用于操作Collection
Collection常用
static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换
static void  sort(List<T> list) :按照列表中元素的自然顺序进行排序
static void shuffle(List list):傻否,随机置换  
static void reverse(List list)  :反转
static void fill(List list, Object obj) :使用指定的对象填充指定列表的所有元素
static void copy(List dest, List src) :是把源列表中的数据覆盖到目标列表     
目标列表的长度至少等于源列表的长度
static int  binarySearch(List list, Object key) 使用二分查找法查找指定元素在指定列表的索引位置

评分

参与人数 1黑马币 +5 收起 理由
cjy631155 + 5 很给力!

查看全部评分

3 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马