首页 > 其他分享 >Collection接口

Collection接口

时间:2022-12-18 10:22:05浏览次数:35  
标签:ArrayList 元素 List 指定 接口 Collection 集合

集合只能存储引用数据类型,如果要存基本数据类型,需要存对应的包装类
char——Character
int——Integer

 

 

一 Collection(接口)常用方法

1 add(E e)
2 addAll​(Collection<? extends E> c) 将指定集合中的所有元素添加到此集合(可选操作)。
3 remove(E e)
4 removeIf(Object o) 删除满足条件的此集合中的元素
5 removeAll​(Collection<?> c) 删除指定集合中包含的所有此集合的元素(可选操作)。
6 contains(E e)
7 containsAll​(Collection<?> c) 如果此集合包含指定集合中的所有元素
8 isEmpty() 判断集合是否为空
9 clear() 清空集合所有元素
10 size() 获取集合的长度
11 toArray​(T[] a) 返回一个包含此集合中所有元素的数组;

二 迭代器的使用

1 创建Collection对象(多态:用子类创建父类)

Collectio c = new Array List();
c.add(123) //这里的123是Integer类型 自动装箱

2 迭代器遍历Collection集合

(1) 通过集合对象获取迭代器对象
(2) 用hashNext()方法循环判断迭代器对象中是否还有元素
(3) 如果有元素,通过next()方法获取迭代器中的元素

 Iterator iterator = c.iterator();
    while(iterator.hasNext()){
        Object object = iterator.next();
        System.out.println(object);
    }

3 迭代器删除方法(不理解)

remove(); 删除迭代器对象当前指向的元素

4 增强for遍历

for(数组/集合中元素的数据类型 变量名:数组/集合对象){
循环体
}

5 三种遍历方式使用场景

(1)增强for
(2)普通for:遍历过程中要增删元素、或操作索引时使用
(3)迭代器:遍历过程中删除元素时使用

三 List集合(可重复)

1 List集合特点:

list也称线性表,有序列表
(1)List集合及其实现类都是有索引的
(2)可以存储重复元素
(3)元素存取有序(存和取得顺序一致)

2 List集合特有得方法(增删改查)

(1) add(int index,E e)向集合中指定索引位置添加元素
(2) remove(int index)删除指定索引处的元素,并返回
(3) set(int index, E e)修改指定索引处的元素,返回被修改的元素
(4) get(int index)获取指定索引处的元素
(5) indexOf(Object o)返回此列表中指定元素第一次出现的索引,若此列表不包含此元素,返回-1

3 常用的实现List接口的类:

ArrayList:类似数组,线程不安全,查询速度快
LinkedList:双向链表结构(大手牵小手)增删速度快
Vector:矢量,线程安全,但速度慢。
Stack:堆栈(LIFO)

4 ArrayList实现类

(1)ArrayList对象,是长度可变的对象引用数组。

  • ArrayList默认容量是10.当要保存的新元素所需的容量不足时,触发扩容 规则,基本规则为扩容1.5倍

(2)ArrayList底层采用数组实现,拥有快速随机访问能力
(3)ArrayList支持列化功能,支持克隆功能、排序功能等。
(4)ArrayList是非同步的。

5 LinkedList实现类

(1)LinkedList的实现机制与ArrayList的实现机制完全不同

  • ArrayList内部以数组的形式保存集合的元素
    所以随机访问集合元素有较好的性能;
  • LinkedList内部以链表的形式保存集合的元素
    所以随机访问集合中的元素性能较差,但在插入删除元素时有较好的性能

(2)特有功能
①addFirst(E e)向集合中第一个位置添加元素
addLast(E e)
②getFirst()获取集合中第一个元素
getLast()
③removeFirst()删除集合中第一个元素
④pop() 栈顶元素出栈(往出弹最后一个)
⑤push(E e) 元素e入栈(从末尾往进加人)

(3)LinkedList实现了两个接口:

  • List接口中定义了线性表操作方法
  • Deque接口定义了线性数列从队列两端访问元素的方法

(4)LinkedList对象(链表对象)既可以表示线性序列表,也可以把它当做堆栈使用,还可以把它当作队列使用

四 Set集合

1 set集合特点

(1)不能存储重复元素(去重
(2)没有索引(不能用普通for)
(3)存取无序

2 哈希值:是JDK根据对象的地址或者字符串或者数字计算出来的int类型的数值

hashCode() 返回对象的哈希码值
注:由于String类重写了父类的hashCode()方法。所以如果对象的内容一样,那么哈希值一样

                                          **但**哈希值一样,内容不一定一样

3 HashSet集合

HashSet集合保证元素唯一性必须 重写hashCode()和equals()方法

4 TreeSet集合

(1)特点:
元素按照一定的规则进行排序,具体排序方式取决于构造方法

  • TreeSet()根据元素的自然顺序进行排序

    • 自然排序:数字0-9,字母a-z,数字排在字母前
  • TreeSet(Comparator< ?super E >comparator):根据指定的比较器进行排序

(2)比较器:

Comparab——自然排序器
让元素所属的类实现Comparable接口,重写comparaTo(T o1 ,T o2)方法,注意排序规则

  • 0:两个对象相同
  • 正数:升序(存取顺序一致)
  • 负数:降序(存取顺序不一致)

Comparator——选择排序器
让元素所属的类实现Comparator接口,重写compara(T o1 ,T o2)方法,注意排序规则

  • o1-o2:升序
  • o2-o1:降序

5 使用匿名对象进行存档:无对象名称,只能使用一次
set.add(new Student("张三",23));

四 Collections工具类

1 常用方法

(1)addAll(Collection c,E e) 将指定元素添加到指定集合中
(2)max(Collection c)返回集合中最大的元素
(3)shuffle(List lilst)打乱集合中元素的顺序
(4)sort(List list,Comparator c)根据指定比较器对指定列表进行排序

2 批量添加元素到指定集合

(1)Collections.addAll(list,1,2,3,4);
(2)Integer[] arr={1,2,3,4}
Collections.addAll(list,arr);
(3)List<Integer> list1 = List.of(1,2,3,4)
//jdk9及以上的新特性
(4)List集合、Set集合下都有
addAll(Collection c) 将一个集合中的所有元素添加到另一个集合中(合并)
不去重 list.addAll(set);
去重 set.addAll(list);

 

标签:ArrayList,元素,List,指定,接口,Collection,集合
From: https://www.cnblogs.com/Sco-/p/16990050.html

相关文章

  • 基于.NetCore开发博客项目 StarBlog - (21) 开始开发RESTFul接口
    前言最近电脑坏了,开源项目的进度也受到一些影响这篇酝酿很久了,作为本系列第二部分(API接口开发)的第一篇,得想一个好的开头,想着想着就鸽了好久,索性不扯那么多了,直接开写吧~......
  • 数据接口
    接口名称速率功能雷电3type-c 40Gbps,即5GB/s数据、视频、PD充电(最高100W)、扩展坞全功能type-ctype-c(usb3.1)10Gbps,900MB/s数据、扩展坞usb3.1Gen2比3.1Gen1和3.0快2倍......
  • 视频接口
    接口名称速率DP32.4GbpsHDMIHDMI10GbpsMINIHDMI10GbpsMicroHDMI10Gbps全功能TYPE-C外接4K显示器:DP或HDMI2.0 ......
  • Microsoft 365 开发:通过Powershell预先排错已删除或者已存在的Site Collection
    Blog链接:​​​https://blog.51cto.com/13969817​​我们都知道SPOAdmin或者网站所有者在删除SiteCollection的时候,默认是softdelete,SiteCollection并没有真正的被删除,......
  • Microsoft 365 开发:如何通过Powershell批量创建Site Collection
    Blog链接:​​​https://blog.51cto.com/13969817​​作为SPOOnlineadmin,很多时候面临来自各个部门的业务请求批量新建SiteCollection的需求,如果手动在在Microsoft365管......
  • 26_Java的接口组成更新
    Java的接口组成更新一、接口组成更新概述回忆接口组成:​ 常量:publicstaticfinal 默认写好​ 抽象方法:publicabstract 默认写好在Java8之后加入了......
  • 链接的接口--符号
    链接的接口--符号在链接中,我们将函数和变量统称为符号,每个文件都有一个相应的符号表,这个符号表记录了目标文件中的所有符号。每个符号对应了一个符号值,对于函数和变量......
  • shopex采集发布接口 shopex火车头数据采集器(20120812更新) 使用火车头接口技术一键批量
    shopex如何实现商品批量导入数据采集批量发布1 找供应商采购谈判给你进货价2 一键采集供应商给你的所有商品(批量采集产品价格、批量采集多图、批量......
  • Hessian2序列化支持这一点,让重构dubbo接口更容易了
    先看如下Hessian2序列化的测试代码。importcom.alibaba.com.caucho.hessian.io.Hessian2Input;importcom.alibaba.com.caucho.hessian.io.Hessian2Output;importcom......
  • 如何设计优雅的API接口
    前后端分离开发模式下,后端工作的对外表现就是一系列的API接口。如何设计一个优雅的API接口,以满足规范性、安全性、稳定性、易排查等需求?几年工作下来也有了一些心得,但考虑......