本帖最后由 老成 于 2019-5-7 17:27 编辑
集合
一、Collection是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection元素
Collection集合的常用方法
boolean add(E e) 向集合中添加元素
boolean remove(E e) 将元素从集合中删除
void clear() 清空集合所有的元素
boolean contains(E e) 判断集合中是否包含指定的元素
boolean isEmpty() 判断集合是否为空
int size() 获取集合的长度
Collection集合遍历
Iterator<E> iterator() 返回此集合中元素的迭代器
public class Test {
public static void main(String[] args) {
Student s1 = new Student("蔡徐坤",25);
Student s2 = new Student("成龙",52);
Student s3 = new Student("范冰冰",20);
Collection<Student> col = new ArrayList<>();
col.add(s1);
col.add(s2);
col.add(s3);
Iterator<Student> it = col.iterator();
while (it.hasNext()){
Student s = it.next();
System.out.println(s.getName()+","+s.getAge());
}
for (int i = 0; i < col.size(); i++) {
Student s = ((ArrayList<Student>) col).get(i);
System.out.println(s.getName()+","+s.getAge());
}
}
}
1.1、List是有带有索引的单类集合接口
List集合特有的方法
void add(int index,E e) 向集合中指定索引位置添加元素
E remove(int index) 删除指定索引处的元素并返回
E set(int index,E e) 修改指定索引处的元素,返回被修改的元素
E get(int index) 获取指定索引处的元素
List集合遍历
listIterator() 索引遍历 增强for循环
List的两个实现类:
ArrayList底层是数组,查找快,增删慢
LinkedList底层是链表,查找慢,增删快
1.2、Set是不带索引的,不可存储重复元素的单列集合接口
HashCode值的概念:是JDK根据对象的地址或字符串或数字计算出来的一串int类型的数值,哈希值不同,一定不是同一对象,哈希值相同,不确定。
hashSet集合存储元素不可重复原因分析(分析源码):
先判断哈希值,哈希值不同直接存储
哈希值相同再判断节点是否为空,为空直接存储
不为空,equals判断链表中是否有相同内容,没有存储
有不存储
哈希表数据结构:数组+链表
LinkedHashSet 以输入顺序存储数据
TreeSet 按照构造方法决定存储顺序
TreeSet():根据元素的自然顺序进行排序
TreeSet(Comparator c):根据指定的比较器进行排序
TreeSet遍历:TreeSet集合没有索引。只能通过迭代器、增强for循环进行遍历
|
|