Java集合框架【二容器(Collection)[ArrayList]】

news2024/11/25 2:40:15

文章目录

  • 1 容器/集合简介
  • 2 容器的结构
    • 2.1 结构图
      • 2.1.1 单例集合
      • 2.1.2 双例集合
  • 3 单例集合的使用
    • 3.1 Collection接口的介绍
    • 3.2 Collection接口中的接口方法
    • 3.3 List接口
      • 3.3.1 List接口特点
      • 3.3.2List的常用方法
    • 3.4 ArrayList容器类
      • 3.4.1 添加元素
      • 3.4.2 获取元素
      • 3.4.3 根据索引删除元素/删除指定元素
      • 3.4.4 替换元素
      • 3.4.5 清空/判空容器
      • 3.4.6 判断容器中是否包含指定元素
      • 3.4.7 查找第一次/最后一次元素的位置
      • 3.4.8 将单例集合转换为Object/泛型数组
      • 3.4.9 并集操作
      • 3.4.10 交集操作
      • 3.4.11 差集操作

1 容器/集合简介

  • 程序中的“容器”,用来容纳和管理数据。
  • 我们在之前所学习的数组就是一种容器,可以在其中放置对象或基本数据类型数据。数组的优势:一种简单的线性序列,可以快速访问数组元素,效率高。从效率和类型检查角度来讲,数组是最好的。劣势:不灵活。容量需要事先定义好,不能根据需求的变化而变化。
  • 由于数组并不能满足我们对“管理和组织数据的需求”,所以我们需要一种更强大、更灵活、容量可以随时变化的容器来装载对象。

2 容器的结构

2.1 结构图

在这里插入图片描述

2.1.1 单例集合

在这里插入图片描述

2.1.2 双例集合

  • 双例集合:基于key和value的结构存储数据。
    在这里插入图片描述

3 单例集合的使用

3.1 Collection接口的介绍

  • Collection是单例集合跟接口,它是集中收集的意思。 Collection接口的2个子接口是List和Set接口。

3.2 Collection接口中的接口方法

方法说明
boolean add(Object element)增加元素到容器中
booleanremove(Object element)从容器中移除元素
boolean contains(Object element)容器中是否包含该元素
int size()容器中元素的数量
boolean isEmpty()容器是否为空
void clear()清空容器中所有元素
iterator iterator()获得送代器,用于遍历所有元素
boolean containsAll(Collection c)本容器是否包含C容器中的所有元素
boolean addAlI(Collectiond c)将容器C中所有元素增加到本容器
boolean removeAll(Collection c)移除本容器和容器c中都包含的元素
boolean retainAll(Collection c)取本容器和容器C中都包含的元素,移除非交集元素
Object[] toArray0转化成Object数组
removeIf 【jdk1.8之后】作用是删除容器中所有满足filter指定条件的元素。
stream parallelstreamstream和parallelstream分别返回该容器的Stream视图表示,不同之处在于parallelstream()返回并行的Stream。Stream是Java函数式编程的核心类。
spliterator可分割的送代器不同以往的iterator需要顺序送代,Spliterator可以分割为若千个小的选代器进行并行操作,可以实现多线程操作提高效率
  • 由于List、Set是Collection的子接口,意味着所有List、Set的实现类都有上面的方法。

3.3 List接口

3.3.1 List接口特点

  • 有序:有序(元素存入集合的顺序和取出的顺序一致)。List中每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。
  • 可重复:List允许加入重复的元素。更确切地讲,List通常允许满足e1.equals(e2)的元素重复加入容器

3.3.2List的常用方法

方法说明
void add(int index.Object element)在指定位置插入元素,以前元素全部后移一位
Object set(int index,Object element)修改指定位置的元索
Object get(intindex)返回指定位置的元系
Object remove(intindex)删除指定位置的元素,后面元系全部前移一位
int indexOf(Object o)返回第一个匹配元素的索引,如果没有该元素返回-1
int lastindexOf(Object o)返回最后一个匹配元素的索引,如果没有该元素,返回-1

3.4 ArrayList容器类

  • ArrayList是List接口的实现类,是List存储特征的具体实现
  • ArrayList底层使用数组实现的存储。特点:查询效率高、增删效率低、线程不安全。

3.4.1 添加元素

/**
 * @author 缘友一世
 * date 2022/11/17-22:29
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list.add("小倩"));
        System.out.println(list.add("小灵"));
        list.add(1,"小静");
        System.out.println("添加完成");
        System.out.println(list.toString());
    }
}

在这里插入图片描述

3.4.2 获取元素

在这里插入图片描述

/**
 * @author 缘友一世
 * date 2022/11/17-22:29
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list.add("小倩"));
        System.out.println(list.add("小灵"));
        list.add(1,"小静");
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));
        for (int i=0;i<list.size();i++) {
            System.out.print(list.get(i)+" ");
        }
    }
}

在这里插入图片描述

3.4.3 根据索引删除元素/删除指定元素

在这里插入图片描述
在这里插入图片描述

/**
 * @author 缘友一世
 * date 2022/11/17-22:29
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list.add("小倩"));
        System.out.println(list.add("小灵"));
        list.add(1,"小静");
        list.remove(2);
        list.remove("小静");
        for (int i=0;i<list.size();i++) {
            System.out.print(list.get(i)+" ");
        }
    }
}

在这里插入图片描述

3.4.4 替换元素

在这里插入图片描述

/**
 * @author 缘友一世
 * date 2022/11/17-22:29
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list.add("小倩"));
        System.out.println(list.add("小灵"));
        list.add(1,"小静");
        System.out.println(list.set(2,"小月"));
        for (int i=0;i<list.size();i++) {
            System.out.print(list.get(i)+" ");
        }
    }
}

在这里插入图片描述

3.4.5 清空/判空容器

在这里插入图片描述
在这里插入图片描述

/**
 * @author 缘友一世
 * date 2022/11/17-22:29
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list.add("小倩"));
        System.out.println(list.add("小灵"));
        list.add(1,"小静");
        list.clear();
        System.out.println(list.isEmpty());
    }
}

在这里插入图片描述

3.4.6 判断容器中是否包含指定元素

在这里插入图片描述

/**
 * @author 缘友一世
 * date 2022/11/17-22:29
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list.add("小倩"));
        System.out.println(list.add("小灵"));
        list.add(1,"小静");
        System.out.println(list.contains("小狐"));
    }
}

在这里插入图片描述

3.4.7 查找第一次/最后一次元素的位置

在这里插入图片描述
在这里插入图片描述

/**
 * @author 缘友一世
 * date 2022/11/17-22:29
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list.add("小倩"));
        System.out.println(list.add("小灵"));
        list.add(1,"小静");
        System.out.println(list.add("小灵"));
        for (int i=0;i<list.size();i++) {
            System.out.print(list.get(i)+" ");
        }
        System.out.println();
        System.out.println(list.indexOf("小灵"));
        System.out.println(list.lastIndexOf("小灵"));
    }
}

在这里插入图片描述

3.4.8 将单例集合转换为Object/泛型数组

在这里插入图片描述

/**
 * @author 缘友一世
 * date 2022/11/17-22:29
 */
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list.add("小倩"));
        System.out.println(list.add("小灵"));
        list.add(1,"小静");
        //将ArrayList转化为Object[]
        //不能在转化的方法调用时进行强制类型转换。
        Object[] arr = list.toArray();
        for(int i=0;i<arr.length;i++) {
            String str=(String) arr[i];
            System.out.print(str+" ");
        }
        System.out.println();
        //指定类型转换
        String[] array = list.toArray(new String[list.size()]);
        for (String s:array) {
            System.out.print(s+" ");
        }
    }
}

在这里插入图片描述

3.4.9 并集操作

在这里插入图片描述

public class ArrayListTest {
    public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<>();
        list.add("小倩");
        list.add("小灵");
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("小静");
        list1.add("小晶");
        System.out.println(list.addAll(list1));
   }
}

在这里插入图片描述

3.4.10 交集操作

在这里插入图片描述

public class ArrayListTest {
    public static void main(String[] args) {
 	ArrayList<String> list = new ArrayList<>();
        list.add("小倩");
        list.add("小灵");
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("小静");
        list1.add("小晶");
        list1.add("小倩");
        System.out.println(list.retainAll(list1));
        for (int i=0;i<list.size();i++) {
            System.out.print(list.get(i)+" ");
        }
   }
}

在这里插入图片描述

3.4.11 差集操作

在这里插入图片描述

public class ArrayListTest {
    public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<>();
        list.add("小倩");
        list.add("小灵");
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("小静");
        list1.add("小晶");
        list1.add("小倩");
        System.out.println(list.removeAll(list1));
        for (int i=0;i<list.size();i++) {
            System.out.print(list.get(i)+" ");
        }
	}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

水尺监测识别系统

水尺监测识别系统利用计算机视觉机器学习技术对河道湖泊进行实时检测&#xff0c;当水尺监测识别系统监测到河道水位异常时&#xff0c;立即告警。水尺监测识别系统同时将告警截图和视频保存下来&#xff0c;推送给后台。水尺监测识别系统极大提升现场区域的管控效率&#xff0…

android EventBus

EventBus使用小案例 文件目录结构 MainActivity.java package com.example.myeventbus;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import andro…

两万字长文带你深入Go语言GC源码

介绍 三色标记法 三色标记法将对象的颜色分为了黑、灰、白&#xff0c;三种颜色。 黑色&#xff1a;该对象已经被标记过了&#xff0c;且该对象下的属性也全部都被标记过了&#xff08;程序所需要的对象&#xff09;&#xff1b;灰色&#xff1a;该对象已经被标记过了&#…

一段JS去除畅言免费版广告

畅言广告怎么去掉&#xff1f;去除畅言免费版广告方法是什么&#xff1f;现在很多站长都使用的社会化评论系统&#xff0c;可以让网站拥有免费的评论区&#xff0c;活化你的网站&#xff0c;但是随着很多社会化评论提供网站的关闭&#xff0c;畅言一家独大&#xff0c;现在免费…

企业网络自动化配置

更新的技术、合规性标准和不断变化的业务需求使管理当今的网络成为一项具有挑战性的任务。这解释了网络自动化在当今世界的重要性。IT 管理员现在的任务是确保网络的敏捷性和演进不会影响提供给最终用户的网络服务的稳定性、可用性和可靠性。但是&#xff0c;在此任务中&#x…

【JMX】JMX远程监控JVM参数配置

目录基本用法命令示例jconsole连接新建连接确认连接方式查看监控信息jvisualvm连接添加主机增加JMX连接查看监控信息参数说明基本参数jmxremote.access文件说明jmxremote.password文件说明文件权限异常无法验证基本用法 命令示例 #参考命令 java -Dcom.sun.management.jmxrem…

【Java学习】语法:包、权限修饰符、final、常量、枚举、抽象类、接口

文章目录一、包二、权限修饰符三、final四、常量五、枚举六、抽象类七、接口一、包 什么是包? 包是用来分门别类的管理各种不同类的&#xff0c;类似于文件夹、建包利于程序的管理和维护。建包的语法格式: package公司域名倒写.技术名称。报名建议全部英文小写&#xff0c;且…

WebRTC系列<二> 案例与工具

阅读关于webRTC的其他文章&#xff1a; WebRTC系列&#xff1c;一&#xff1e; 什么是WebRTC&#xff1f; WebRTC系列&#xff1c;二&#xff1e; 案例与工具 ---------------------------------案例--------------------------------- webrtc官网 : 官网示例代码github地址…

【Raspberry Pi】搭建NAS流媒体播放器 + ARIA2 + YAAW + 迅雷下载系统

由于种&#xff08;gu&#xff09;种&#xff08;ji&#xff09;原&#xff08;cuo&#xff09;因&#xff08;wu&#xff09;新买的Pi并没有用于任何项目上&#xff0c;看着它一天一天的封尘&#xff0c;于心不忍终于让它也做了点事。恰好这几天家里网络晚上有点卡&#xff0c…

数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(二)

文章目录3. 时序电路的设计3.1 触发器3.1.1 最简单的D触发器3.1.2 带复位端的D触发器3.1.3 复杂功能的D触发器&#xff08;没有太大必要&#xff09;3.1.4 T触发器3.2 计数器3.2.1 二进制计数器3.2.2 &#xff08;重要&#xff09;任意进制计数器3.3 移位寄存器3.4 序列信号发生…

docker命令整理

第一次安装 查看docker是否安装成功 docker version 测试hello-world docker run hello-world –help 帮助 查看详细信息 docker info 搜索docker镜像网址&#xff1a;https://hub.docker.com/search 查看 查看cpu实时内存 docker stats 镜像关键字&#xff1a;images -…

MySQL-Redis进阶生成全局唯一ID

单体全局ID 场景一、随着我们商城规模越来越大&#xff0c;mysql的单表的容量不宜超过500W&#xff0c;数据量过大之后&#xff0c;我们要进行拆库拆表&#xff0c;但拆分表了之后&#xff0c;他们从逻辑上讲他们是同一张表&#xff0c;所以他们的id是不能一样的&#xff0c; …

阿里最新财报:中国商业分部收入下滑1%,年内股价累计下跌34%

11月17日&#xff0c;阿里巴巴集团&#xff08;下称“阿里巴巴”&#xff0c;HK:09988、NYSE:BABA&#xff09;公布2023财年第二季度&#xff08;对应自然年2022年第三季度&#xff09;业绩。财报显示&#xff0c;阿里巴巴2022年第三季度的收入为人民币2071.76亿元&#xff08;…

[附源码]java毕业设计流浪动物领养系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

计算机中的加法器和比较器

本节展示了计算机中的加法器和比较器的底层实现电路设计。 加法器 计算机中加法器的实现依赖门的结构&#xff0c;如果是两个十进制进行加减&#xff0c;则首先把右边的两个0-9之间的数相加&#xff0c;它们的总和在0-18之间&#xff0c;如果答案是0-9之间&#xff0c;则直接写…

Vue--》详解vue组件及其组件化的使用

目录 Vue组件 非单文件组件 单文件组件 组件的组成部分 组件中定义methods方法 vue-cli中组件的使用步骤 vue-cli中注册全局组件 组件的props属性 props中的常用属性 组件间的样式冲突 Vue组件 vue是一个支持组件化开发的前端框架。什么是组件化开发&#xff1f;组件…

那些年我们遇到过的奇葩面试官

做了几年软件开发&#xff0c;我们都或多或少面试过别人&#xff0c;或者被别人面试过。大家最常吐槽的就是面试造火箭&#xff0c;进厂拧螺丝。今天就来吐槽一下那些奇葩&#xff08;gou&#xff09;一样的面试官 A 那是在我刚工作1年的时候&#xff0c;出去面试前端开发。 那…

虚拟筛选、高通量实验筛选化合物库

Kynurenine Pathway Library (含12,300种化合物) 靶向犬尿氨酸代谢途径关键酶的新型化合物库 KynureninePathway (犬尿氨酸途径, KP)是色氨酸代谢的主要途径&#xff0c;参与多个病理、生理过程。研究发现阿尔茨海默病、帕金森氏症等多种神经退行性疾病中的 KP 代谢产物水平…

hevc 继续色度半像素差值

1 前面已经讲了亮度的半像素差值&#xff0c;接下来讲一下色度的半像素差值。 亮度分量的运动估计已经精确到了1/4的精度&#xff0c;并且速度分量的分辨率是亮度分量的一般&#xff0c;所以色度插值需要精确到1/8的精度&#xff0c;色度分数像素插值按照基于离散余玄变换的4抽…

写代码有这20个好习惯,可以减少90%非业务的bug

每一个好习惯都是一笔财富&#xff0c;本文整理了写代码的20个好习惯&#xff0c;每个都很经典&#xff0c;养成这些习惯&#xff0c;可以规避多数非业务的bug&#xff01;希望对大家有帮助哈&#xff0c;谢谢阅读&#xff0c;加油哦~ 修改完代码&#xff0c;记得自测一下 「改…