三种集合(collection)
List:有序的
Set:保证没有重复元素
Map:使用的是键值对
集合的遍历:
统一使用迭代器的方式来访问集合;(Iterator)
iterator包含两个方法,一个是hasNext,判断是否有下一个元素,next()返回下一个元素。
一般使用foreach,只要是这个集合实现了iterator接口,java都会帮我们使用iterator来遍历集合,因为这样是最高效的。
List集合:
继承图
List的实现类1:ArrayList
操作ArrayList其实就和操作数组一样的。它的内部就是使用的数组实现的。
它的api有:
- 在末尾添加一个元素:
void add(E e)
- 在指定索引添加一个元素:
void add(int index, E e)
- 删除指定索引的元素:
int remove(int index)
- 删除某个元素:
int remove(Object e)
- 获取指定索引的元素:
E get(int index)
- 获取链表大小(包含元素的个数):
int size()
List的实现类2:ArrayList
这个内部使用的就是单链表实现的。
它的api接口和ArrayList是一样的,只不过他们的算法效率和性能是有差别的。一般情况下我们首先使用ArrayList
注意点:List是有序的,同时他是可以重复添加元素的。List还能添加null;
List转换为数组:
有三种方法:
- 调用
toArray()
方法直接返回一个Object[]
数组:使用这个方法会丢失类型信息,就是原来里面装的是什么类型的数据我们不知道了 - 第二种方式是给
toArray(T[])
传入一个类型相同的Array
,List
内部自动把元素复制到传入的Array
中: - 通过
List
接口定义的T[] toArray(IntFunction<T[]> generator)
方法
数组转化为List:
使用Arrays.asList(array),即可把数组转化为List集合;这里转化过来的List只读,不要对他进行增删改操作。