面试的时候被问到一下,现在整理一下一些Java的知识。
Collection类
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
任何实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection和传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
怎样遍历Collection中的每一个元素?不论Collection的实际类型怎样,他都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
由Collection接口派生的两个接口是List和Set。
任何实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection和传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
怎样遍历Collection中的每一个元素?不论Collection的实际类型怎样,他都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
由Collection接口派生的两个接口是List和Set。
1. List类
可以包含重复元素,是一个有序的集合,提供了按索引访问的方式,有次序,位置不改变。
1.1 ArrayList类
采用数组存放元素,增删慢,查询快,线程不安全
1.2 LinkedList类
采用链表存放元素,增删快,查询慢
1.3 Vector
数组实现,线程安全
2. Set类
无序集合,不允许存放重复元素,允许null元素
2.1 HashSet类
equals返回true,hashcode返回相同的整数,存储的数据是无序的
2.2 LinkedHashSet类
存储的数据是有序的