首页 > 其他分享 >集合

集合

时间:2023-01-24 21:55:27浏览次数:35  
标签:遍历 迭代 元素 泛型 集合 public

集合进阶

(一)泛型

  • 统一数据类型

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

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

  •  

 

标签:遍历,迭代,元素,泛型,集合,public
From: https://www.cnblogs.com/Lhaitao/p/17066435.html

相关文章

  • MySQL 的IN查询根据传入的id集合排序:order by field
     默认使用in查询的时候,我们查询出来的集合是乱序的不是按照传入的集合ID进行排序,如果需要按照传入的集合ID进行排序就需要使用我们下面这个方法 sql写法:orderby......
  • Python语言基础—集合的常见操作方法
    希望本阶段内容可以帮助大家学好Python基础,详情可以关注上方Python专栏!文章目录​​系列文章目录​​​​一、创建集合​​​​二、集合常见操作方法​​​​2.1增加数据​......
  • 总结集合
    2023.1.4昨天题难大家都差不多,今天就160倒数第二(还是策略问题,感觉都不会考试和调代码了。。。签完到就去写最难写的计算几何,最后才开t1,发现很简单,但是没什么时间了。最......
  • C#集合
    usingSystem;usingSystem.Collections;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespacelearn_collection{internalclassPr......
  • 集合
    集合基础importjava.util.ArrayList;publicclassArrayListDemo_1{publicstaticvoidmain(String[]args){ArrayList<String>arrL=newArrayL......
  • Java 集合 - 精简版
    Java集合1.Collection1.List1.ArrayList存储有序有索引元素可重复底层是Object数组查询快,增删慢2.LinkedList存储有序无索引元素可重复底层是......
  • day17集合
    1.Set集合1.1Set集合概述和特点【应用】不可以存储重复元素没有索引,不能使用普通for循环遍历1.2Set集合的使用【应用】存储字符串并遍历publicclassMySet1{......
  • day18集合
    1.Map集合1.1Map集合概述和特点【理解】Map集合概述interfaceMap<K,V>K:键的类型;V:值的类型Map集合的特点双列集合,一个键对应一个值键不可以重复,值可以重复......
  • day16集合
    1.Collection集合1.1数组和集合的区别【理解】相同点都是容器,可以存储多个数据不同点数组的长度是不可变的,集合的长度是可变的数组可以存基本数据类型和引......
  • js遍历集合中的数据取值
    js遍历集合中的数据取值res.items我后端返回的数据集合constarray=res.items;options.map((item)=>{if(item.code==value){}});......