黑马程序员——Collection集合

来源:互联网 发布:怎样注册淘宝会员名 编辑:程序博客网 时间:2024/06/05 23:57

------- android培训java培训、期待与您交流! ----------


集合:用于存储对象,长度可变,可以存储不同类型对象


接口 Collection<E>
共性方法:
1,添加
add(e);
addAll(collection);

2,删除
remove(e);
removeAll(collection);
clear();

3,判断。
contains(e);
isEmpty();

4,获取
iterator();
size();

5,获取交集。
retainAll();


6,集合变数组。
toArray();

1,add方法的参数类型是Object。以便于接收任意类型对象。
2,集合中存储的都是对象的引用(地址)

迭代器
Iterator  iterator() 
注意:迭代返回的元素对象是Object(多态),即Object obj=new 对象();当调用对象的特有方法时,需对迭代返回的元素进行强转。

接口 Iterator中方法:
hasNext() 
          如果仍有元素可以迭代,则返回 true。 
next() 
          返回迭代的下一个元素。 
remove() 
          从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
 
注意:
在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException异常。
所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作。


Iterator it = al.iterator();


while(it.hasNext())
{
代码
}


Collection
|--List:元素是有序的,元素可以重复。因为该集合体系有索引
|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
|--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步
|--Set:元素是无序,元素不可以重复。


List:
特有方法。凡是可以操作角标的方法都是该体系特有的方法。



add(index,element);
addAll(index,Collection);


remove(index);


set(index,element);



get(index):
subList(from,to);
listIterator();
int indexOf(obj):获取指定元素的位置。
ListIterator listIterator();

List集合特有的迭代器。ListIterator是Iterator的子接口。增加了对元素的操作方法

Iterator中方法:
hasNext();  next();  remove()

ListIterator中方法:
add(obj);  remove()
hasNext();  next();正向遍历
hasPrevious();  previous();逆向遍历

LinkedList:底层使用的链表数据结构
特有方法:
addFirst();
addLast();

getFirst();
getLast();
获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException


removeFirst();
removeLast();
获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException


在JDK1.6出现了替代方法。

offerFirst();
offerLast();

peekFirst();
peekLast();
获取元素,但不删除元素。如果集合中没有元素,会返回null。

pollFirst();
pollLast();
获取元素,但是元素被删除。如果集合中没有元素,会返回null。


|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
|--HashSet:底层数据结构是哈希表。是线程不安全的。不同步
|--TreeSet:可以对Set集合中的元素进行排序。底层数据结构是二叉树。

HashSet保证元素唯一性是通过元素的两个方法,hashCode和equals来完成。
如果元素的HashCode值相同,才会判断equals是否为true。
如果元素的hashcode值不同,不会调用equals。
注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。

TreeSet保证元素唯一性的依据:compareTo方法return 0.

TreeSet排序的第一种方式:
让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。这种方式也称为元素的自然顺序,或者叫做默认顺序。

TreeSet的第二种排序方式:
当元素自身不具备比较性,或者具备的比较性不是所需要的。
这时需要让容器自身具备比较性。
定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。
自定义比较器:定义一个类,实现Comparator接口,覆盖compare方法。


当两种排序都存在时,以比较器为主。

0 0
原创粉丝点击