集合

您所在的位置:网站首页 单列集合的顶层接口 集合

集合

#集合| 来源: 网络整理| 查看: 265

集合进阶 (一)泛型

统一数据类型

避免强制类型转换带来的异常

如果不写泛型,默认为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