现在的位置: 首页 > 综合 > 正文

JAVA学习笔记—集合(Collection)

2018年05月19日 ⁄ 综合 ⁄ 共 1860字 ⁄ 字号 评论关闭

Collection定义了集合框架的共性功能。
1,添加
add(e); add方法的参数类型是Object。以便于接收任意类型对象
addAll(collection);
2,删除
remove(e);
removeAll(collection);
clear();
3,判断。
contains(e);
isEmpty();
4,获取
iterator(); 迭代器--其实就是集合的取出元素的方式 。
size(); 集合长度 元素个数
5,获取交集。
retainAll(); 取交集
6,集合变数组。
toArray();
集合中存储的都是对象的引用(地址).



Collection
        |--List:元素是有序的,元素可以重复。因为该集合体系有索引。
  |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
  |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
  |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
     |--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
         |--HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
    HashSet是如何保证元素唯一性的呢?
    是通过元素的两个方法,hashCode和equals来完成。如果元素的HashCode值相同,才会判断equals是否为true。
             如果元素的hashcode值不同,不会调用equals。
             注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。 
            |--TreeSet:可以对Set集合中的元素进行排序。底层数据结构是二叉树。
    保证元素唯一性的依据:compareTo方法return 0.
    TreeSet排序的第一种方式:让元素自身具备比较性。
    元素需要实现Comparable接口,覆盖compareTo方法。
    这种方式也成为元素的自然顺序,或者叫做默认顺序。
    TreeSet的第二种排序方式:
    当元素自身不具备比较性时,或者具备的比较性不是所需要的。
    这时就需要让集合自身具备比较性。定义了比较器,将比较器对象作为参数传递给TreeSet集合的
                     构造函数。在集合初始化时,就有了比较方式。




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的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。



LinkedList:特有方法:
addFirst();addLast();getFirst();getLast();
获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException
removeFirst();removeLast();
获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException

在JDK1.6出现了替代方法。
offerFirst();offerLast();peekFirst();peekLast();
获取元素,但不删除元素。如果集合中没有元素,会返回null。
pollFirst();pollLast();
获取元素,但是元素被删除。如果集合中没有元素,会返回null。



Set:
Set集合的功能和Collection是一致的

抱歉!评论已关闭.