集合知识

来源:互联网 发布:分析软件 编辑:程序博客网 时间:2024/06/06 10:02
集合类的由来:
对象需要用于封装特有数据,对象多了需要存储,如果对象的个数不确定。
就使用集合容器进行存储。
集合特点:
1、用于存储对象的容器。
2、集合长度是可变的。
3、集合中不可以存储基本数据类型值。


集合容器因为内部的数据结构不同,有多种具体容器。
不断向上抽取,就形成了集合框架。
Collection的常见方法:
1、添加
boolean add(E c);
boolean addAll(Collection <>e);
2、删除
boolean remove(Object c);
boolean removeAll(Collection coll);//将两个集合中的相同元素从调用removeAll的集合中删除
void clear();//清空
3、包含
boolean contains(Object obj);
boolean containsAll(Collection coll);
4、判断集合是否为空
boolean isEmpty();//是否有元素,无返回true
5、获取:
int size();//判断长度
Iterator iterator();//取出元素的方式:迭代器
该对象必须依赖于具体的容器,因为每一个容器的数据结构不同
所以该迭代器对象是在容器中进行内部实现的
对于使用容器者而言,具体实现不重要,只要通过容器获取到该实现的迭代器即可,
也就是iterator方法
Iterator接口就是对所有Collection容器进行元素取出的公共接口
6、其他
boolean retainAll(Collection coll);//取交集
Object[]toArray();//将集合转成数组
---------------------------------
Collection
|--List:有序(存入和取出的顺序一致),元素都有索引(角标)元素可以重复
|--Set:元素不能重复
List:特有常见方法:有一个共性特点,就是都可以操作角标
1、添加
void add(int index, E element);

2、删除
Object remove(index);

3、修改
Object set(int index, E element) 



4、获取
Object get(index);
int indexOf(object);
int lastindexOf(object);
List subList(int fromIndex, int toIndex) 
          返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)。
list集合可以对元素进行增删改查
List:
|--Vector:内部是数组数据结构,是同步的
|--ArrayList:内部数数组数据结构,是不同的
|--LinkedList:内部是链表数据结构
LinkedList:
addFirst();
addLast();
jdk 1.6后
offerFirst();
offerLast();

getFirst();//获取但不移除,如果链表为空,抛出NoSuchElementException
getLast();
jdk1.6后
peekFirst();//获取但不移除,如果链表为空,返回null
peekLast();

removeFirst();//获取并移除,如果链表为空,抛出NoSuchElementException
removeLast();
jdk1.6后
pollFirst();//获取并不移除,如果链表为空,返回null
pollLast();
-------------------------------------------------
set:
元素不可重复,无序
set接口中的方法与Collection的一致
|--Hashset内部数据结构是哈希表,是不同步的
|--Threeset可以对set集合中的元素进行排序是不同步的
判断元素的唯一性方式,就是根据比较方法的返回结果是否是0,是就是相同元素,不存
Treeset对元素进行排序的方式之一:
让元素自身具备比较功能,元素就需要实现comparable接口,覆盖compareTo方法。
如果不要按照对象中具备的自然顺序进行排序。或对象中不具备自然顺序?
可以使用TreeSet集合第二种排序方式而:
让集合自身具备比较功能:
定义一个类实现comparator接口,覆盖compare方法。
将该对象作为参数传递个TreeSet集合的构造函数

0 0
原创粉丝点击