List{
特色:取出的顺序和存入的顺序一致,元素有索引,能够重复数组
将List集合中的元素取出有两种方式{安全
1.使用迭代器iterator();数据结构
2.遍历集合,使用get(index)获取,这个方法只有List有函数
}
迭代器{spa
1.迭代器进行迭代容器时,不能够修改容器内容,(即:返回迭代器对象与遍历之间不可修改)不然会抛出:ConcurrentModificationException对象
2.Iterator有一个子接口ListIterator(List特有方法),使用该方法能够实如今迭代过程当中完成对容器元素的操做排序
格式:ListIterator li = list.listIterator(); 索引
}接口
子类{get
1.Vector:内部是数组数据结构,同步的,效率低
2.ArrayList:内部是数组数据结构,不一样步,效率高,替代了Vector,具备数组查找操做速度快 的特色
3.LinkedList:内部是链表数据结构,不一样步,具备链表增删元素速度快的特色
}
}
Set{
特色{
1.内部元素不重复(知足a.equals(b)时,a.b只能存在一个)
2.取出的顺序与存入的顺序不一致
3.容器内部只有一个null
}
子类{
HashSet{
特色:内部是哈希表的数据结构,不一样步,稳定
存储方式{
1.先判断元素哈希值是否相同,相同时就判断内容是否相同
2.判断哈希值就是判断对象的hashCode()是否相同。判断内容用equals。若是hashCode不一样则补判断equals
}
自定义hashSet容器的元素必须覆写hashCode和equals方法,用于定义规则,判断是否存入容器
}
LinkedSet:内部是链表(保证按必定的顺序存储)和哈希表(计算元素位置)相结合的数据结构
TreeSet{
特色:内部是二叉树结构,因此使用元素的顺序进行排序
注意{
自定义容器元素类型的时候必须定义比较方法,不然会抛出ClassCastException
判断元素惟一性的方式:在比较方法过程当中,若是返回0,就表示两元素相同
}
元素比较方法{
一:让元素自身具有比较功能,即让该元素类实现Comparable接口并覆盖compareTo方法
二:让集合自身具有比较的功能,建立一个实现Comparator接口的子类,并覆盖compare方法(该方法传入两个元素类型参数,并在内部对其进行比较),将该子类对象做为集合的构造函数传递进TreeSet
}
}
}
}
泛型{
定义:jdk1.5以后出现的安全机制的新特性,在编译时期使用的技术
好处{
1.将运行时期的ClassCastException转到编译时期
2.省去了强制类型转换的麻烦
}
注意{
1.当操做引用数据类型不肯定的时候,使用泛型(一个用于接收具体引用数据类型的参数范围)
2.在程序中,只要用到了带有泛型的类或接口就必须指定传入的具体引用数据类型
}
擦除与补偿{
1.擦除:运行时,会将泛型去除,因此生成的.class文件中是不带泛型的,(为了兼容原来的类加载器)
2.补偿:运行时经过获取元素的类型进行自动转换动做,就不须要使用者抢孩子转换
}
泛型的使用{
泛型类:使用泛型来接收类中要操做的引用数据类型,当类中的操做的引用数据类型不肯定是,就使用泛型表示。
格式: class Name{.........}
例:Name n = new Name()这个一个只能操做String类型数据的类
泛型方法:当方法静态时,就不能访问类定义的泛型(静态方法不须要对象,而类的泛型须要建立对象定义),因此就能够将泛型定义在方法内部(修饰词后,返回类型前)
格式:public static void method(T obj){............} 该方法只能接收T类型的数据,
泛型接口:定义一个泛型接口后,若是该接口的实现类还不肯定泛型的具体类型就依旧用class II implements I
{public void show(Q q)(......)......} ,若是肯定了泛型类型就直接使用该类型class II implements I{public void show(String q)(......)......} 。即什么时候肯定具体类型就什么时候使用
}
通配符{
>
定义:包含全部类型
上限与下限{
上限:对类型进行限定, ? extends E。接收E类型或E的子类型,用于存储元素
下限:对类型进行限定, ? super E。接收E类型或E的父类型,用于取出元素
}
注意:泛型运用的时候,等号左右两边必须相同
例:Collection extends Person(//若是该地方使用Person就报错,由于右边指定存储Student类型,而左边指定Person类型,类型不一致)> = new ArrayList( )
}
}
Set与List的总结{
保证惟一:Set
按顺序存储:TreeSet----》二叉树结构---》Comparable(元素使用)和Comparator(容器使用)
无序存储:HashSet---》哈希表结构---》hashCode和equals
输入与输出顺序一致:LinkedHashSet----》哈希表和链表结构
不惟一:List
改动数据频繁:LinkedList----》链表结构,就有Linked特色
查询操做:ArrayList---》数组结构,具备Array特色
}