集合只能存储简单数据类型,例如:List<Integer> = new ArrayList<>();这里存储的也是引用类型
1--数组
1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候的数组就叫对象数组。 (2)案例: 用数组存储5个学生对象,并遍历数组。
2--一般的集合(collection)
Collection |--List |--ArrayList |--Vector |--LinkedList |--Set |--HashSet |--TreeSet
集合和数组的区别:
集合和数组的区别?
A:长度区别
数组固定
集合可变
B:内容区别
数组可以是基本类型,也可以是引用类型
集合只能是引用类型
C:元素内容
数组只能存储同一种类型
集合可以存储不同类型(其实集合一般存储的也是同一种类型)
用法:
Collection的功能概述
A:添加功能
boolean add(Object object):添加一个元素。
boolean addAll(Collection c):添加一个集合的元素。
B:删除功能
vouid clear():移除所有元素。
boolean remove(Object o):移除一个元素。
boolean removeAll(Collection c):移除一个集合的元素。(是一个还是所有)
C:判断功能
boolean contains(Object o):判断集合中是否包含指定的元素。
boolean containsAll(Collection c):判断集合中是否包含指定的集合元素。(是一个还是所有)
boolean isEmpty():判断集合是否为空。
D:获取功能
Iterator<E> iterator():(重点)
E:长度功能
int size():元素的个数。
面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
没有,有,没有
F:交集(了解)
boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回boolean又是什么意思呢?
G:把集合转数组(了解)
Object[] toArray():
3--list
List集合的特有遍历功能 A:由size()和get()结合。 B:代码演示 //创建集合对象 List list = new ArrayList(); //创建并添加元素 list.add("hello"); list.add("world"); list.add("java"); //遍历集合 Iterator it = list.iterator(); while(it.hasNext()) { String s =(String) it.next(); System.out.println(s); } System.out.println("----------"); for(int x=0; x<list.size(); x++) { String s =(String) list.get(x); System.out.println(s); } (4)列表迭代器的特有功能;(了解) 可以逆向遍历,但是要先正向遍历,所以无意义,基本不使用。 (5)并发修改异常 A:出现的现象 迭代器遍历集合,集合修改集合元素 B:原因 迭代器是依赖于集合的,而集合的改变迭代器并不知道。 C:解决方案 a:迭代器遍历,迭代器修改(ListIterator) 元素添加在刚才迭代的位置 b:集合遍历,集合修改(size()和get()) 元素添加在集合的末尾
(6)常见数据结构 A:栈 先进后出 B:队列 先进先出 C:数组 查询快,增删慢 D:链表 查询慢,增删快 (7)List的子类特点(面试题) ArrayList 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高。 Vector 底层数据结构是数组,查询快,增删慢。 线程安全,效率低。 LinkedList 底层数据结构是链表,查询慢,增删快。 线程不安全,效率高。 到底使用谁呢?看需求? 分析: 要安全吗? 要:Vector(即使要,也不使用这个,后面再说) 不要:ArrayList或者LinkedList 查询多;ArrayList 增删多:LinkedList 什么都不知道,就用ArrayList。 (8)List集合的案例(遍历方式 迭代器和普通for) A:存储字符串并遍历 B:存储自定义对象并遍历
引用:http://blog.csdn.net/l1585931143/article/details/53749787