java 单列集合总结
Collection 接口
add()
remove()
contains()
clear();
size();
迭代器遍历(普通迭代器,不能再遍历过程中修改集合的长度)
List接口 单列集合 有序可重复 有索引
add(index,obj)
remove(index)
get(index)
set(index,obj)
List的遍历
for循环
迭代器
使用集合步骤
创建集合对象
创建元素对象(引用数据类型(包含基本数据类型包装类对象))
调用集合方法,增删改查
使用迭代器遍历集合( ListIterator 列表迭代器,可以在遍历过程中修改集合长度)
hashNext查看是否有下一个元素
如果有:调用next方法获取
二个儿子 Vector(自行利用API文档学习)
线程不安全:高效
ArrayList:底层是数组结构,查询快,增删慢
LinkedList:底层链表结构,查询慢,增删快
到底改用谁?
查询多:ArrayList
增删多:LinkedList
如果你根本不知道改用谁,就用ArrayList
Set接口 单列集合 无序不可重复
元素唯一,无序(存储和读取的顺序可能不一致)
HashSet
如何保证元素唯一?底层数据结构是哈希表,依赖于元素的哈希值
最终:hashcode方法和equals方法
顺序:
先比较hashcode的返回值
相同:继续调用equals方法比较元素的内容
不相同:直接添加到集合
HashSet存储基本数据类型和String:因为基本数据额类型包装类以及String重写hashCode和equals方法
HashSet存储自定义类型:需要重写hashcode和equals方法
TreeSet
如何保证元素唯一?
根据compareTo方法的返回值是不是0
如何元素排序
1. 元素所在的类实现Comparable接口,重写compareTo方法
2. 集合具有比较性,创建TreeSet集合对象的时候调用有参构造方法,传入比较器对象(匿名内部类)
遍历集合:迭代器和增强for循环
LinkedHashSet
底层是哈希表和链表
保证元素唯一和元素有序
增强for循环!!!!
集合遍历
for(元素类型 变量名:集合名){
强转 Object转为子类对象 使用子类的特有成员!!!!!!
输出变量名就是集合中的每一个元素
}