30.0/集合/ArrayList/LinkedList

目录

30.1什么是集合?

30.1.2为什么使用集合

30.1.3自己创建一个集合类

30.1.3 集合框架有哪些?

 30.1.2使用ArrayList集合

30.2增加元素

 30.3查询的方法

30.4删除

30.5 修改

30.6泛型


30.1什么是集合?

  1. 我们之前讲过数组,数组中它也可以存放多个元素。
  2. 集合就是一个容器,里面可以存放若干个元素。

30.1.2为什么使用集合

数组的长度是固定,而且数组中数据类型必须统一。

int[] arr=new int[10];

引入了集合。可以存放。

集合它是一个类,只是该类中存在增加元素,删除元素,修改元素,统计元素的个数等方法。

30.1.3自己创建一个集合类

它也可以无限的增加元素,增加任意类型的元素。

package demo01;import java.util.Arrays;public class MyArray {//存放集合元素的private Object [] arr=new Object[3];//表示集合中元素的个数private int size;/*** 添加元素* @param o*/public void add(Object o){//判断数组是否已满。if(size==arr.length){//扩容--并把原来数组中得元素放入新数组arr=Arrays.copyOf(arr,arr.length*2);}arr[size]=o;size++;}/*** 根据下标获取指定元素* @param index* @return*/public Object get(int index){if(index<0||index>=size){throw new RuntimeException("给定下标越界");}return arr[index];}//获取集合的长度--元素的个数public int size(){return size;}
}

你都可以想到创建一个类,该类可以不断的增加元素,jdk官方一定也会想到创建一个类,可以不断的增加元素。官方会根据不同的数据结构创建不同的类。而官方提供的这些类---集合框架。

30.1.3 集合框架有哪些?

 底层也是使用数组。允许元素重复,而且根据下标获取元素,查询效率非常高。删除和添加慢。


 30.1.2使用ArrayList集合

必须创建该类的对象。

public  ArrayList(){}  默认分配数组的个数10个
public ArrayList(int size){} 人为指定数组元素的个数

30.2增加元素

public class Test02 {public static void main(String[] args) {ArrayList list = new ArrayList();list.add("java01");list.add("java02");list.add(15);list.add(25.6);list.add(true);//往集合尾部追加。list.add(3,"欧炜健");list.add(3,"赖林龙");System.out.println(list);}
}

 30.3查询的方法

package demo02;import java.util.ArrayList;
import java.util.Objects;public class Test {public static void main(String[] args) {ArrayList list=new ArrayList();list.add(new People("赖林龙",18));list.add(new People("胡荣纯",17));list.add(new People("吴韩煜",19));list.add(new People("赖林龙",18));boolean is = list.contains(new People("胡荣纯", 17));System.out.println(is); //equals方法比较。int i = list.indexOf(new People("吴韩煜", 19));System.out.println("第一次出现的位置:"+i);//求集合中元素的个数:int size = list.size();System.out.println("集合中元素的个数:"+size);//遍历集合for(int a=0;a<list.size();a++){Object o = list.get(a);System.out.println(o);}System.out.println("=================================增强循环==========================");for (Object o : list) {System.out.println(o);}}
}
class People{private String name;private int age;@Overridepublic String toString() {return "People{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o){//this//表示调用当前方法的对象//重写equalsif(this==o){return true;}if(! (o instanceof People)){return false;}People p= (People) o;if(p.getAge()==this.getAge()&&p.getName().equals(this.getName())){return true;}return false;}public People() {}public People(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

定义一个学生类: name,school,age

创建一个集合对象ArrayList. 里面存放5个学生。

<1>判断某个学生对象是否在集合中

<2>查看指定学生第一次在集合中出现的位置

<3>求集合中元素的个数

<4>遍历集合---使用两种方式

30.4删除

ArrayList list=new ArrayList();list.add(new People("赖林龙",18));list.add(new People("胡荣纯",17));list.add(new People("吴韩煜",19));list.add(new People("赖林龙",18));list.add(new People("吴韩煜",19));list.remove(3);//根据下标删除指定的元素list.remove(new People("吴韩煜",19));//根据内容移除,第一个。list.clear();//清空内容System.out.println("=================================增强循环==========================");for (Object o : list) {System.out.println(o);}

30.5 修改

ArrayList list=new ArrayList();list.add(new People("赖林龙",18));list.add(new People("胡荣纯",17));list.add(new People("吴韩煜",19));list.add(new People("赖林龙",18));list.add(new People("吴韩煜",19));list.set(2,new People("张学友",16));//修改指定位置上的内容List list1 = list.subList(1, 3); //截取集合System.out.println(list1);

30.6泛型

 <E>:表示泛型标识符---在创建类对象时指定数据类型,如果没有指定那么该类型为Object.

public class Test03 {public static void main(String[] args) {//规定集合中存放的数据类型。--获取元素是就是对应的类型。ArrayList<People> list=new ArrayList<>();list.add(new People("赖林龙",18));list.add(new People("胡荣纯",17));list.add(new People("吴韩煜",19));list.add(new People("无效五",19));list.add(new People("赖林龙",18));list.add(new People("吴志雄",18));list.add(new People("吴韩煜",19));list.add(new People("吴三桂",18));//找到集合中所有姓吴的for (People people : list) {boolean b = people.getName().startsWith("吴");if(b){System.out.println(people);}}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 6》(10)

《Linux操作系统原理分析之Linux 进程管理 6》&#xff08;10&#xff09; 4 Linux 进程管理4.6 Linux 管道4.6.1 管道的概念4.6.2 无名管道1.终端使用2.程序中使用 4.6.2 命名管道1.终端使用2.程序中使用 4 Linux 进程管理 4.6 Linux 管道 4.6.1 管道的概念 1、管道是 linu…

MEFLUT: Unsupervised 1D Lookup Tables for Multi-exposure Image Fusion

Abstract 在本文中&#xff0c;我们介绍了一种高质量多重曝光图像融合&#xff08;MEF&#xff09;的新方法。我们表明&#xff0c;曝光的融合权重可以编码到一维查找表&#xff08;LUT&#xff09;中&#xff0c;该表将像素强度值作为输入并产生融合权重作为输出。我们为每次…

docker基础快速入门:基础命令、网络、docker compose工具

docker基础命令快速入门 目录 docker基本命令docker 网络docker compose Docker介绍 Docker是一个虚拟环境容器&#xff0c;可以将你的开发环境、代码、配置文件等一并打包到这个容器中&#xff0c;并发布和应用到任意平台中。 Docker的三个概念 镜像 Docker镜像是一个特…

来自2023 TM Forum 数字领导力中国峰会的邀请函

峰会介绍 2023数字领导力中国峰会由tmforum和亚信科技联合主办。 数据驱动创新&#xff0c;数字塑造未来&#xff01;2023数字领导力中国峰会&#xff0c;立足技术和商业视角&#xff0c;聚焦讨论各行业如何依托数据治理、IT和网络转型&#xff0c;实现跨越式增长。 这里&am…

Elasticsearch初识--CentOS7安装ES及Kibana

文章目录 一&#xff0e;前言二&#xff0e;介绍1.Elasticsearch2.Kibana 三&#xff0e;ES安装1.下载安装包2.解压、配置2.1 解压2.2 配置 3.启动3.1增加用户3.2启动 4.解决资源分配太少问题5.启动成功 四&#xff0e;Kibana安装1.下载安装包2.解压、配置2.1 解压2.2 配置2.2 …

如何进行无代码开发?有哪些无代码开发工具和无代码软件开发平台?

无代码开发是指不写代码&#xff0c;通过可视化工具进行应用程序开发。无代码开发让非技术用户通过拖拽和选择等简单操作&#xff0c;就能快速创建应用程序。 如何学习无代码开发 随着科技的不断发展&#xff0c;新的技术和工具不断涌现&#xff0c;无代码开发就是其中一种。掌…

RT-DETR优化改进:IOU创新篇 | 引入MPDIou、WIoU、SIoU、EIoU、α-IoU,在不同场景实现涨点

🚀🚀🚀本文改进:引入MPDIou、WIoU、SIoU、EIoU、α-IoU,适配RT-DETR 🚀🚀🚀MPDIou、WIoU、SIoU、EIoU、α-IoU在各个场景都能够有效涨点 🚀🚀🚀RT-DETR改进创新专栏:http://t.csdnimg.cn/vuQTz 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; …

图像分类任务

本文记录 北京邮电大学 计算机学院的学习记录 什么是图像分类任务&#xff1f; 图像分类任务是计算机视觉中的核心任务&#xff0c;其目 标是根据图像信息中所反映的不同特征&#xff0c;把不同类别 的图像区分开来 图像分类任务有哪些难点呢&#xff1f; 语义鸿沟视角变化…

为什么要坚持每天做公域引流

做公域不一定等于拍视频&#xff0c;真正适合小白的引流方式其实还是做图文内容&#xff0c;比如小红书发帖&#xff0c;知乎问答&#xff0c;微信读书&#xff0c;问一问等。 长期坚持每天做公域引流有以下好处&#xff1a; 提高品牌知名度&#xff1a;每天坚持做公域流量&a…

ECMAScript2023你学习了吗?

一、ES2023 Features 【Array find from last】 从头到尾搜索数组&#xff1a;findLast() 、findLastIndex()【Hashbang Grammar】Hashbang 语法【Symbols as WeakMap keys】Symbol 作为 WeakMap 的键【Change array by copy】通过副本更改数组&#xff1a;toReversed()、toSo…

2016年五一杯数学建模C题二孩政策问题解题全过程文档及程序

2016年五一杯数学建模 C题 二孩政策问题 原题再现 多年来实施的严、紧计划生育政策对控制人口增长起到关键作用。在优生优育政策的指引下&#xff0c;我国人口质量显著提高&#xff0c;但也带来了不利影响&#xff0c;生育率偏低、男女比例失衡、人口老龄化情况严重等问题。2…

Go 基本语法

一、​​​​变量定义方法 var 定义变量 var 变量名 类型 表达式 var name string "Snail" var age int 21 var isOK bool bool 2.类型推导方式定义变量 a 在函数内部&#xff0c;可以使用更简略的: 方式声明并初始化变量**注意&#xff1a;**短变量只能用于声…