黑马程序员技术交流社区

标题: 【石家庄】学习总结 [打印本页]

作者: 老成    时间: 2019-5-7 17:15
标题: 【石家庄】学习总结
本帖最后由 老成 于 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循环进行遍历















欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2