一、单值保存的最大父接口:Collection
1、允许重复的子接口:List,拥有两个子类:ArrayList和Vector
ArrayList是JDK1.2推出,采用异步处理方式,性能较高,非线程安全,输出:Iterator,foreach,ListIterator
Vector是JDK1.0推出,采用同步处理方式,性能相对较低,线程安全,输出:Iterator,foreach,ListIterator,Enumeration
2、不允许重复的子接口:Set,两个常用的子类:HashSet,TreeSet
2.1、HashSet是以无序的方式保存数据,并且没有重复的数据,
2.2、TreeSet是以有序的方式保存数据,并且没有重复的数据,如果想要正确排序自定义对象的大小,那么对象所在的类必须实现Comparable接口,设置比较规则。
2.3、虽然TreeSet依靠Comparable进行重复元素判断,但是HashSet子类却无法依靠Comparable接口判断重复元素,从真正意思上讲,判断重复元素依靠的不是Comparable(只有排序的时候才依靠Comparable),所有重复元素的判断依赖于Object类的两个方法:hashCode()和equals()方法。
1、允许重复的子接口:List,拥有两个子类:ArrayList和Vector
ArrayList是JDK1.2推出,采用异步处理方式,性能较高,非线程安全,输出:Iterator,foreach,ListIterator
Vector是JDK1.0推出,采用同步处理方式,性能相对较低,线程安全,输出:Iterator,foreach,ListIterator,Enumeration
2、不允许重复的子接口:Set,两个常用的子类:HashSet,TreeSet
2.1、HashSet是以无序的方式保存数据,并且没有重复的数据,
2.2、TreeSet是以有序的方式保存数据,并且没有重复的数据,如果想要正确排序自定义对象的大小,那么对象所在的类必须实现Comparable接口,设置比较规则。
2.3、虽然TreeSet依靠Comparable进行重复元素判断,但是HashSet子类却无法依靠Comparable接口判断重复元素,从真正意思上讲,判断重复元素依靠的不是Comparable(只有排序的时候才依靠Comparable),所有重复元素的判断依赖于Object类的两个方法:hashCode()和equals()方法。
在对象比较的过程中,首先会使用hashCode方法与保存在集合中的对象的hashCode()进行比较,如果相同,则再使用equals()方法进行属性的判断,如果全部相同,则为相同元素。