Java基础-----集合类(三)

news2024/11/15 4:53:23

请添加图片描述

文章目录

  • 1. Arraylist
  • 2. Arraylist常用方法

今天主要学习集合类框架

1. Arraylist

在这里插入图片描述
Collection:是List和Set的父接口,里面包含了一些公用的方法

List:是一个有序的、不唯一的接口

ArrayList:是List的一个实现类,底层数据结构是数组

public class Test {
    public static void main(String[] args) {
        /*Collection collection=new ArrayList();
        List list;
        ArrayList arrayList;*/
        //ArrayList的特点:有顺序的,不唯一
        ArrayList<Integer> list=new ArrayList<>();
        System.out.println(list.toString());//[]
        list.add(12);
        list.add(23);
        list.add(45);
        list.add(10);
        list.add(10);
        System.out.println(list.toString());//[12, 23, 45, 10,10]
    }
}

ArrayList循环遍历

public class TestArrayList {
    public static void main(String[] args) {
        List<String> list=new ArrayList<>(10);
        list.add("AAA");
        list.add("BBB");
        list.add("CCC");
        //集合的循环遍历方式
        //遍历方式1
        /*for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }*/
        //遍历方式2
        /*for (String s : list) {
            System.out.println(s);
        }*/
        //遍历方式3
        /*Iterator<String > iterator=list.iterator();
        while (iterator.hasNext()){//判断是否有下一个元素
            String s = iterator.next();
            System.out.println(s);
        }*/
        /*for(Iterator<String > iterator=list.iterator();iterator.hasNext();){
            System.out.println(iterator.next());
        }*/
        //遍历方式4  lambda
        list.forEach(System.out::println);

    }
}

2. Arraylist常用方法

  • add(Object obj):在集合后面加入元素,会返回一个boolean类型的值

  • add(int index,Object obj):在指定索引位置前面插入一个元素

  • size():获取当前集合中元素的个数

  • isEmpty():判断当前集合中是否为空

  • clear():从集合中删除所有元素

public class TestArrayList2 {
    public static void main(String[] args) {
        ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        System.out.println(list);

        list.add(1,666);
        System.out.println(list);
        System.out.println(list.size());

        boolean b = list.isEmpty();
        System.out.println("b = " + b);
        list.clear();
        boolean b1 = list.isEmpty();
        System.out.println("b1 = " + b1);
    }
}

运行结果:
在这里插入图片描述

  • addAll(Collection c):在当前集合中加入另一个集合的元素,要求两个集合使用的泛型相同(如果一个是Integer,一个是String,就会报错)

  • addAll(int index,Collection c):在当前集合指定位置之前,加入另一个集合的元素

		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);

        ArrayList<Integer> list1=new ArrayList<>();
        list1.add(111);
        list1.add(222);

        list.addAll(list1);
        System.out.println(list);//[123, 456, 111, 222]
		list.addAll(1,list1);
        System.out.println(list);//[123, 111, 222, 456]
  • remove(int index):移除指定索引位置的元素,并将该元素返回

  • remove(Object obj):移除对应元素,如果有多个相同值,只移除第一个找到的元素,如果是整数类型,要封装成包装类,否则会把此元素当成索引来处理。返回boolean类型的值,是否移除成功

  • removeAll(Collection c):从当前集合中移除参数集合中所有包含的元素

		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);
        //list.remove(111);//报错:java.lang.IndexOutOfBoundsException
        //移除111这个元素
        list.remove(Integer.valueOf(111));
        System.out.println(list);//[123, 456, 222]

        //如果ArrayList中有两个相同的元素
        list.add(111);
        list.remove(Integer.valueOf(111));
        System.out.println(list);
		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);

        //移除指定位置的元素
        list.remove(1);
        System.out.println(list);//[123, 111, 222]
		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);//[123, 456, 111, 222]

		ArrayList<Integer> list1=new ArrayList<>();
        list1.add(123);
        list1.add(111);
        list.removeAll(list1);
        System.out.println(list);//[456, 222]
  • retainAll(Collection c):在当前集合中保留参数集合中所有包含的元素
		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);
        List<Integer> list1= Arrays.asList(111,222);
        boolean b = list.retainAll(list1);
        System.out.println(list);//[111, 222]
  • contains(Object o):判断当前集合中是否包含给定参数的元素,返回boolean类型的值

  • containsAll(Collection c):判断当前集合中是否包含给定参数集合中的所有元素

		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);
        boolean b = list.contains(333);//false
        System.out.println("b = " + b);
        List<Integer> list1= Arrays.asList(222);
        boolean b1 = list.containsAll(list1);
        System.out.println("b1 = " + b1);//true
		List<Integer> list2=Arrays.asList(111,333);
		boolean b2 = list.containsAll(list2);
        System.out.println("b2 = " + b2);//false
  • toArray():以正序的方式,返回一个包含所有元素的对象数组
		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);
        Object[] objects = list.toArray();
        for (Object object : objects) {
            System.out.println(object);
        }
  • indexOf(Object):查找参数在当前集合中第一次出现的索引位置

  • lastIndexOf(Object):查找参数在当前集合中最后一次出现的索引位置

 		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        list.add(456);
        System.out.println(list);
        int i = list.indexOf(456);
        int j = list.lastIndexOf(456);
        System.out.println(i+" , "+j);//1,4

		List<Integer> list1 = list.subList(0, 3);
        System.out.println("list1 = " + list1);//list1 = [123, 456, 111]
  • subList(int index,int end):对当前集合进行截取,从起始位置(包含)截取到结束位置(不包含),返回一个新的List集合

  • iterator():获取集合的迭代器

  • listIterator():获取集合的List迭代器

  • set(int index,Object obj):设置索引位置的元素为第二个参数数据

【注意】创建一个固定大小的集合,不可以添加数据,也不可以删除

public class TestIterator {
    public static void main(String[] args) {
        //创建一个固定大小的集合,不可以添加数据,也不可以删除
        //报错:java.lang.UnsupportedOperationException
        List<String> list= Arrays.asList("aa","bb","cc","dd");
        //list.add("ee");
        //list.remove(0);
        for (String s : list) {
            System.out.println(s);
        }

    }
}

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

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

相关文章

终于学会听英文歌了:A Sad Me In Your Eyes

A Sad Me In Your Eyes 来源&#xff1a; https://lyricstranslate.com/en/ln-party-sad-me-your-eyes-lyrics.html Fire can’t burn in my eyes If without your smile Snow can cover your smile If without your love When you think of me, I’ve gone too far I can’t …

八怪:再谈 MySQL 8 这两个精准的时间戳

MySQL 8.0 的 binlog 中多了 immediate_commit_timestamp 和 original_commit_timestamp 的信息&#xff0c;网上也有很多文章进行解释&#xff0c;最近也刚好遇到相关问题&#xff0c;刚好稍微学习一下。 作者&#xff1a;高鹏&#xff08;八怪&#xff09;&#xff0c;《MySQ…

手把手将ReactJS项目部署到Ubuntu

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 1.构建项目 npm run build 生成build目录&#xff1a; 2.上传项目 将build目录上传到Ubuntu。 可以使用Xftp工具。 3.启动项目 npm install -g serve serve -s …

原生JS做别踩白块游戏

思路 创建初始一个按钮并为他添加点击监听开始创建随机方块&#xff0c;并样式_box.offsetTop speed px结合setInterval使得方块不断下移创建和删除方块的原则&#xff1a;box.offsetTop>0&#xff08;可视区上部没有方块了&#xff09;时候需要创建一行方块&#xff0c;…

Apache DolphinScheduler 社区 2023 年度工作报告

随着 2023 年的日历逐渐翻至最后一页&#xff0c;我们欣喜地回顾 Apache DolphinScheduler 社区在这一年中所取得的成就和进步。这一年&#xff0c;我们不仅在社区规模和技术发展上取得了显著成就&#xff0c;还发布了大量的技术文章和博客&#xff0c;进一步丰富了我们的知识库…

【Java进阶篇】Java中Timer实现定时调度的原理(解析)

Java中Timer实现定时调度的原理 ✔️ 引言✔️JDK 中Timer类的定义✔️拓展知识仓✔️优缺点 ✔️ 引言 Java中的Timer类是用于计划执行一项任务一次或重复固定延迟执行的简单工具。它使用一个名为TaskQueue的内部类来存储要执行的任务&#xff0c;这些任务被封装为TimerTask对…

条款16:成对使用 new 和 delete 时要采用相同形式

下面程序的行为是未定义的。至少&#xff0c;stringArray指向的100个string对象中有99个不太可能被正确地析构。 被delete的指针指向单个对象还是一个对象数组&#xff1f;内存数组通常包括数组的大小&#xff0c;delete可以知道需要调用多少个析构函数。 使用delete时使用了方…

SpringBoot 接口对枚举类型的入参以及出参的转换处理

目录 1、在项目中使用枚举类型2、不做任何处理的演示效果2.1、接口出参2.2、接口入参 3、用枚举的code作为参数和返回值3.1 代码案例3.1.1、定义枚举基础接口BaseEnum&#xff0c;每个枚举都实现该接口3.1.2、性别Sex枚举并实现接口BaseEnum3.1.3、定义BaseEnum枚举接口序列化3…

前端工程化回顾-vite 构建神器

1.构建vite 项目 pnpm create vite2.常用的配置&#xff1a; 1.公共资源路径配置&#xff1a; base: ./, 默认是/2.路径别名配置&#xff1a; resolve: {alias: {: path.resolve(__dirname, ./src),ass: path.resolve(__dirname, ./src/assets),comp: path.resolve(__dirnam…

正则表达式 详解,10分钟学会

大家好&#xff0c;欢迎来到停止重构的频道。 本期我们讨论正则表达式。 正则表达式是一种用于匹配和操作文本的工具&#xff0c;常用于文本查找、文本替换、校验文本格式等场景。 正则表达式不仅是写代码时才会使用&#xff0c;在平常使用的很多文本编辑软件&#xff0c;都…

多模态大模型Vary:扩充视觉Vocabulary,实现更细粒度的视觉感知

前言 现代大型视觉语言模型(LVLMs)具有相同的视觉词汇- CLIP&#xff0c;它可以涵盖大多数常见的视觉任务。然而&#xff0c;对于一些需要密集和细粒度视觉感知的特殊视觉任务&#xff0c;例如文档级OCR或图表理解&#xff0c;特别是在非英语场景下&#xff0c;clip风格的词汇…

盛最多水的容器(力扣11题)

例题&#xff1a; 分析&#xff1a; 这道题给出了一个数组&#xff0c;数组里的元素可以看成每一个挡板&#xff0c;要找到哪两个挡板之间盛的水最多&#xff0c;返回盛水量的最大值。这其实是一个双指针问题。 我们可以先固定第一个挡板( i )和最后一个挡板( j )&#xff0c…

FreeRTOS——计数型信号量知识总结及实战

1计数型信号量概念 1&#xff09;计数型信号量相当于队列长度大于1 的队列&#xff0c;因此计数型信号量能够容纳多个资源 2&#xff09;适用场景&#xff1a; 事件计数&#xff1a; 当每次事件发生后&#xff0c;在事件处理函数中释放计数型信号量&#xff08;计数值1&#x…

mysql查询表里的重复数据方法:

1 2 3 4 INSERT INTO hk_test(username, passwd) VALUES (qmf1, qmf1),(qmf2, qmf11) delete from hk_test where usernameqmf1 and passwdqmf1 MySQL里查询表里的重复数据记录&#xff1a; 先查看重复的原始数据&#xff1a; 场景一&#xff1a;列出username字段有重读的数…

【算法每日一练]-dfs bfs(保姆级教程 篇8 )#01迷宫 #血色先锋队 #求先序排列 #取数游戏 #数的划分

目录 今日知识点&#xff1a; 使用并查集映射点&#xff0c;构造迷宫的连通块 vis计时数组要同步当回合的处理 递归求先序排列 基于不相邻的取数问题&#xff1a;dfs回溯 n个相同球放入k个相同盒子&#xff1a;dfs的优化分支暴力 01迷宫 血色先锋队 求先序排列 取数游…

[Android]RadioButton控件

RadioButton控件 RadioButton控件是单选按钮控件&#xff0c;它继承自Button控件&#xff0c;可以直接使用Button控件支持的各种属性和方法。 与普通按钮不同的是&#xff0c;RadioButton控件多了一个可以选中的功能&#xff0c;能额外指定一个android&#xff1a;checked属性…

谷歌Gemini模型,碾压GPT-4!

谷歌Gemini 1.0革新&#xff0c;推出Gemini Ultra、Gemini Pro和Gemini Nano模型。Gemini Ultra强大但慢&#xff0c;Gemini Pro通用&#xff0c;Gemini Nano高效。Gemini模型在多领域与ChatGPT竞争&#xff0c;尤其Gemini Pro已应用于Bard。Gemini模型预计将在2024年通过Bard …

c语言结构体学习

文章目录 前言一、结构体的声明1&#xff0c;什么叫结构体?2&#xff0c;结构体的类型3,结构体变量的创建和初始化4&#xff0c;结构体的类型5&#xff0c;结构体的初始化 二、结构体的访问1&#xff0c;结构体成员的点操作符访问2&#xff0c;结构体体成员的指针访问 三、结构…

【解决】Unity 设置跨设备分辨率表现

开发平台&#xff1a;Unity 2018版本以上 开发语言&#xff1a;CSharp 编程平台&#xff1a;Visual Studio 2022   问题描述 使用 UnityEngine.dll 中关于设置分辨率的方法时&#xff0c;无法满足应用以设定分辨率进行屏幕显示问题。因而造成画面不同程度的拉伸情况。而这种情…

【Java】接口和抽象类有什么共同点和区别?

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 【Java】接口和抽象类有什么共同点和区别&…