集合有三大接口,Iterable接口、Collection接口和Map接口。
Iterable接口:
Iterable接口是Collection接口的父类。
Iterable是foreach遍历集合的迭代接口。
实现Iteable接口的类需要实现一个iterator()方法,返回值是Iterator。
iterator() 方法:
1.使用next()获得序列中的下一个元素
2.使用hasNext()检查序列中是否存在下一个元素
3. 使用remove()将迭代器新返回的元素删除
题:
Collection接口中的remove(Object)方法和Iterable在的remove()方法的区别?
1.Collection集合属于单链表结构查询, 找到删除元素后,会重新查询进行删除
Iterable找到删除元素后,可以隔项删除下一个元素
2.Collection删除时,下标可能会发生改变,而Iterable不会
Collection接口:
Collection接口继承了Iterable接口,所以集合也可以进行foreach遍历。
Collection接口在java.util包里。
Collection接口是List和Set的父类,和Map没有继承关系。
List接口:
List接口继承了Collection接口,所以可以使用foreach遍历集合。
List有序不唯一,即元素是有顺序的、可以重复,元素存取值顺序一致。
List接口的实现类ArrayList和LinkedList。ArrayList属于数据结构,查询快,增删慢,
LinkedList属于链表结构,增删快,查询慢。
题:
1.ArrayList和LinkedList的区别?
ArrayList:查询快,增删慢,属于动态数组结构
LinkedList:增删慢,查询慢,属于双向链表结构,可以应用于贪吃蛇游戏。
2.Array和ArrayList的区别?
Array数组,容量固定,只能存储类型一致的数据
ArrayList集合,容量可以动态增长,只能存储类型不一致的数据
3.数组转为List和List转为数组的方法?
List转为数组:list.toArray()
数组转为List:Arrays.asList(数组)
Set接口:
Set接口继承了Collection接口,所以可以使用foreach遍历集合。
Set是无序唯一,即元素是没有顺序的、不可以重复,元素存取值顺序不一致,只允许一个null值。
Set接口的实现类HashSet、TreeSet、LinkedHashSet。
HashSet:查询快
TreeSet:对集合中的元素排序
LinkedHashSet:单链表存数据,是有顺序的
Queue接口:
Queue是队列
队列:先进先出
堆栈:先进后出
Map接口:
Map也可以使用foreach遍历集合,键是Set集合,值是List集合。
Map集合,键唯一,值不唯一,键只允许一个为null,允许值为null。
Map的实现类HashMap、TreeMap、HashTable、LinkedHashMap。
HashMap:查询快,哈希存储结构
TreeMap:对集合中的元素排序
LinkedHashMap:单链表存数据,是有顺序的,存储数据采用的哈希表结构+链表结构。
HashTable:线程安全,效率低
题:
HashMap和HashSet的区别?
HashMap实现了Map接口,用于键值对存储数据,添加元素调用put()方法
HashSet 实现了Set接口,用于存储对象,添加元素调用add()方法