集合 |
您所在的位置:网站首页 › 单列集合的顶层接口 › 集合 |
集合进阶
(一)泛型
统一数据类型 避免强制类型转换带来的异常 如果不写泛型,默认为Object 1.泛型类当一个类的变量数据类型不确定时 修饰符 class 类名{}public class ArrayList{}2.泛型方法 方法类型不确定 修饰符 返回值类型 方法名 (类型 变量名){}public void show(T t){}
3.泛型接口 修饰符 interface 接口名Public interface List{}重点:如何使用 1.实现类给出具体类型 2.实现类延续泛型,创建对象时在确定 4.通配符 可约束一定的范围 ? extends E : 表示可以传递E或者E所以子类类型 ? super E: 表示可以传递E的所有父类类型 5.小结 指定泛型的类型后,传递数据时,可以传递该类型和其子类 泛型不具备继承性,但数据具备继承性 (二)、集合的体系结构 collection List ArrayList linkedList Vector Set HashSet LinkedHashSet TreeSet
List 集合的:添加的元素是有序(存和取有序、非排序的含义)、可重复、有索引。 Set集合:添加的元素是无序(存和取可能不一样)、无重复、无索引。 collection常用方法:add 集合里添加元素(Boolean 永远为true) clear 集合清空(void) remove 删除元素(Boolean 删除成功true 否则返回false) contains 判断某个元素是否包含在集合(Boolean) 注意:自定义类型判断是需重写equals(objects里的 依赖于地址) isEmpty 判断是否为空(Boolean) size 集合的长度(int) collection的遍历方式: 迭代器遍历(不依赖索引) 迭代器获取:类——> iterator 方法有 hasNext 判断是否有元素;next 取当前元素,指针后移 注意:指针不会复位;遍历时,不可以利用集合的方式增加会删除(利用迭代器的remove 来删除); 增强for 遍历(底层是迭代器) 使用范围:所有的单列集合和数组 for (元素的数据类型 变量名 :数组或集合){ }for (String s : list ){ sout(s);}
Lambda 表达式遍历 单列集合:一次只添加一个List 继承了collection的方法 常见方法: void add(int index, E element) //指定位置插入元素E remove(int index) //删除指定位置的元素,并返回E set(int index,E element) //修改指定位置的元素,并返回先前的元素E get(int index,E element) //返回指定位置的元素遍历方式: 迭代器(要删除元素) 增强for 遍历(仅遍历) Lambda 表达式遍历(仅遍历) 普通for 遍历(用索引操作) 列表迭代器遍历(添加元素) 2.LinkedList 底层为双链表,查询慢,增删快 特有方法: public void addFirst(E e)表头插入元素 public void addLast(E e)表尾插入元素 public E getFirst() public E getLast() public E removeFirst() public E removeLast()
HashSet 无序 不重复 无索引 (可用于去重复数据) 方法 hashcode :计算哈希值;自定义类型需要重写 *LinkedHashSet 有序 不重复 无索引 方法同上 TreeSet 不重复 无索引 可排序(底层基于红黑树 来排序) 排序的规则: 默认:Comparable接口指定 比较器排序:创建对象时,传递比较强Comparator指定规则(第一种不能满足要求时使用) 总结ArrayList和HashSet 常用 LinkedList 元素可重复 并且 增删 操作明显多于查询 LinkedHashset 去重 保证存取顺序 TreeSet 排序
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |