主要是想总结一下自己关于学习java集合的一些知识 与大家分享 交流 不太全面..如果有什么不足和错误的地方 还望指正 互相学习..
集合(Collection)
运用集合的条件:我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器 -- 数组 ,而数组的长度固定,所以不适合做变化的需求,Java就提供了集合供我们使用。由于需求不同,Java 就提供了不同的集合类。这多个集合类的数据结构不同,但是它们都是要提供存储和遍历功能的,我们把它们的共性不断的向上提取,最终就形成了集合的继承体系结构图。
Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--LinkedHashSet
Collection 的功能概述
boolean add(Object e) 把给定的对象添加到当前集合中
void clear() 清空集合中所有的元素
boolean remove(Object o) 把给定的对象在当前集合中删除
boolean contains(Object o) 判断当前集合中是否包含给定的对象
oolean isEmpty() 判断当前集合是否为空
Iterator iterator() 迭代器,用来遍历集合中的元素的
nt size() 返回集合中元素的个数
Object[] toArray() 把集合中的元素,存储到数组中
子类集合
(1)List是Collection的子接口
特点:有序(存储顺序和取出顺序一致),可重复。
List的特有功能:
A:添加功能 add(int index, Object e):向集合指定索引处,添加指定的元素,原有元素依次后移
B:删除功能 remove(int index):将指定索引处的元素,从集合中删除,返回值为被删除的元素
C:获取功能 get(int index):获取指定索引处的元素,并返回该元素
D:迭代器功能 listIterator()
E:修改功能 set(int index, Object e):将指定索引处的元素,替换成指定的元素,
返回值为替换前的元素
List的子类特点
ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
LinkedList(特有功能 跟 头尾相关)
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
(2)Set集合的特点
无序,唯一
(2)HashSet集合(掌握)
A:底层数据结构是哈希表(是一个元素为链表的数组)
B:哈希表底层依赖两个方法:hashCode()和equals()
执行顺序:
首先比较哈希值是否相同
相同:继续执行equals()方法
返回true:元素重复了,不添加
返回false:直接把元素添加到集合
不同:就直接把元素添加到集合
C:如何保证元素唯一性的呢?
由hashCode()和equals()保证的
|
|