加载中...

集合

集合进阶

(一)泛型

  • 统一数据类型

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

  • 如果不写泛型,默认为Object

1.泛型类

  • 当一个类的变量数据类型不确定时

    修饰符 class 类名<类型>{}
    public class ArrayList<E>{}

2.泛型方法

  • 方法类型不确定

    修饰符<类型> 返回值类型 方法名 (类型 变量名){}
    public <T> void show(T t){}

     

3.泛型接口

修饰符 interface 接口名<类型>
Public interface List<E>{}
  • 重点:如何使用

  • 1.实现类给出具体类型

  • 2.实现类延续泛型,创建对象时在确定

4.通配符

  • 可约束一定的范围

  • ? extends E : 表示可以传递E或者E所以子类类型

  • ? super E: 表示可以传递E的所有父类类型

5.小结

  • 指定泛型的类型后,传递数据时,可以传递该类型和其子类

  • 泛型不具备继承性,但数据具备继承性

  •  

(二)、集合的体系结构

  • collection

    • List

      • ArrayList

      • linkedList

      • Vector

    • Set

      • HashSet

        • LinkedHashSet

      • TreeSet

      •  

List 集合的:添加的元素是有序(存和取有序、非排序的含义)、可重复、有索引。

Set集合:添加的元素是无序(存和取可能不一样)、无重复、无索引。

collection常用方法:

  1. add 集合里添加元素(Boolean 永远为true)

  2. clear 集合清空(void)

  3. remove 删除元素(Boolean 删除成功true 否则返回false)

  4. contains 判断某个元素是否包含在集合(Boolean) 注意:自定义类型判断是需重写equals(objects里的 依赖于地址)

  5. isEmpty 判断是否为空(Boolean)

  6. size 集合的长度(int)

collection的遍历方式:

  • 迭代器遍历(不依赖索引)

    • 迭代器获取:类——> iterator

    • 方法有 hasNext 判断是否有元素;next 取当前元素,指针后移

    • 注意:指针不会复位;遍历时,不可以利用集合的方式增加会删除(利用迭代器的remove 来删除);

  • 增强for 遍历(底层是迭代器)

    • 使用范围:所有的单列集合和数组

    • for (元素的数据类型 变量名 :数组或集合){
         
      }
      for (String s : list ){
         sout(s);
      }
    •  

  • Lambda 表达式遍历

单列集合:一次只添加一个

  1. 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 排序

  •  

 

posted @ 2023-01-24 21:47  strind  阅读(47)  评论(0)    收藏  举报