2019-05-24 Java学习日记之Colletion集合

对象数组的概述和使用:

 需求:我有5个学生,请把这5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息

Student[ ] arr = new Student[5];    //存储学生对象

arr[0] = new Student("张三",23);  

arr[1] = new Student("李四",24);

arr[2] = new Student("王五",25);

arr[3] = new Student("赵六",26);

arr4] = new Student("老马",20);

for (int i = 0; i < arr.length; i++){

  System.out.println(arr[i]);

}

扫描二维码关注公众号,回复: 6272098 查看本文章

注:数组和集合存储引用数据类型,存的都是地址值

集合的由来及集合继承体系图

A:集合的由来

数组长度是固定的,当添加元素超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少

B:数组和集合的区别:

区别1:

数组即可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值

集合只能存储引用数据类型(对象)集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象

区别2:

数组长度是固定的,不能自动增长

集合的长度是可变的,可以根据元素的增长而增长

C:数组和集合什么时候用

1、如果元素个数是固定的推荐使用数组

2、如果元素个数不是固定的推荐使用集合

Collection集合的基本功能测试:

注意:collectionXxx.java使用了未经检查或不安全的操作

集合的遍历之集合转数组遍历:

集合的遍历:其实就是一次获取集合中的每一个元素

Collection集合的带All功能测试:

集合的遍历之迭代器遍历:

概述:

集合是用来存储元素,存储的元素需要查看,那么就需要迭代(遍历)

Collection存储自定义对象并遍历:

迭代器的原理及源码解析:

A:迭代器原理

迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和

取都是不一样的,那么就需要在每一个类中定义hasNext()和next()方法,这样做是可以

的,但是会让整个集合体系过于臃肿,迭代器是将这样的方法向上抽取出接口,然后在每个类的内部,定义自己的迭代方式,这样做的好处有二,第一规定了整个集合体系的遍历方式都是hasNext()和next()方法,第二,代码有底层内部实现,使用者不用管怎么实现的,会用即可

B:迭代器源码解析

1、在eclipse中Ctrl + shift + t 找到ArrayList类

2、Ctrl + o查找iterator()方法

3、查看返回值是new Itr(),说明Itr这个类实现Iterator接口

4、查找Itr这个内部类,发现重写了Iterator中的所有抽象方法

List集合的特有功能概述和测试:

概述:

void add(int index,E element)

E remove(int index)

E get(int index)

E set(int index,E element)

List集合存储学生对象并遍历:

并发修改异常产生的原因及解决方案:

A:需求:

我有一个集合,请问,我想判断里面有没有“world”这个元素,如果有,我就添加一个“javaee”元素

,请写代码实现

 B:ConcurrentModificationException出现

迭代器遍历,集合修改集合

C:解决方案

a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)

b:集合遍历元素,集合修改元素

数据结构之数组和链表:

A:数组

查询快修改也快

B:链表

查询慢,修改也慢

增删快

List的三个子类的特点:

A:特点

ArrayList:

底层数据结构是数组,查询快,增删慢

线程不安全,效率高

Vector:

底层数据结构是数组,查询快,增删慢。

线程安全,效率低。

Vector相对ArrayList查询慢(线程安全)

Vector相对LinkedList增删慢(数组结构)

LinkedList:

底层数据结构是链表,查询慢,增删快

线程不安全,效率高

Vector和ArrayList的区别:

Vector是线程安全的,效率低

ArrayList是线程不安全的,效率高

共同点:都是数组实现的

ArrayList和LinkedList的区别:

ArrayList底层是数组结果,查询和修改快

LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢

共同点:都是线程不安全的

猜你喜欢

转载自www.cnblogs.com/clqbolg/p/10922998.html