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.mzph.cn/news/178406.shtml

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

相关文章

Cenos7系统通过链接一键安装LAMP项目环境(linux,apache,mysql,php)

前言&#xff1a;嫌装环境麻烦&#xff0c;以下介绍自动安装环境的方法 一.环境配置 根据自己需要选择 操作系统&#xff1a;CenOS 7.x以上Web服务器&#xff1a;Apache 2.4数据库&#xff1a;MySQL 5.7开发框架&#xff1a;ThinkPHP 5.0&#xff08;PHP5.0以上&#xff09;…

【Web】NewStarCtf Week2 个人复现

目录 ①游戏高手 ②include 0。0 ③ez_sql ④Unserialize&#xff1f; ⑤Upload again! ⑥ R!!C!!E!! ①游戏高手 经典前端js小游戏 检索与分数相关的变量 控制台直接修改分数拿到flag ②include 0。0 禁了base64和rot13 尝试过包含/var/log/apache/access.log,ph…

Git 入门指南

什么是 Git&#xff1f; Git 的目前最流行的分布式版本控制软件&#xff0c;可以帮助我们高效敏捷的处理任何项目。 版本管理 要理解 Git 我们首先要理解版本管理。 版本管理就是开发过程中用于管理对文件、目录或者工程等内容的修改历史&#xff0c;可以让我们方便的查看历史…

java学习part20内部类

116-面向对象(高级)-类的成员之五&#xff1a;内部类_哔哩哔哩_bilibili 1.内部类

在Anaconda中用命令行安装环境以及安装包

一、下载Anaconda 下载地址 二、创建环境 1. 打开Anaconda命令行 2.创建环境 conda create -n 环境名称 python3.10(需要的python版本号) 3.激活环境 activate 环境名4.下载安装包 pip install 模块名 -i https://pypi.tuna.tsinghua.edu.cn/simple5.下载torch 官网&…

Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 什么是字符编码 计算机从本质上来说只认识二进制中的0和1&#xff0c;字符编码(Character Encoding) 是一种将…

【JavaScript框架】Vue与React中的组件框架概念

组件框架是用于构建应用程序的工具&#xff0c;以便将UI和逻辑划分为单独的可重用组件。目前的组件框架包括React、Vue、Angular、Ember、Svelte等。 Vue和React使用了常见的框架概念&#xff0c;如处理状态、道具、引用、生命周期挂钩、事件等。这两个框架在当今的web开发中被…

项目中高并发如何处理

在项目中处理高并发主要需要考虑以下几个方面的策略&#xff1a; 优化数据库设计&#xff1a;使用合适的数据结构、索引和查询优化技术可以显著提高数据库的响应性能&#xff1b;分库分表使用缓存&#xff1a;缓存是一种非常有效的处理高并发的方法。通过将常用的数据或结果保…

Spring源码解读之创建bean

本文章我们会解读一下Spring如何根据beanDefinition创建bean的&#xff1b; 代码入口&#xff1a; AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext(AppConfig.class);applicationContext.refresh(); 当spring执行refresh(…

Jmeter+influxdb+grafana监控平台在windows环境的搭建

原理&#xff1a;Jmeter采集的数据存储在infuxdb数据库中&#xff0c;grafana将数据库中的数据在界面上进行展示 一、grafana下载安装 Download Grafana | Grafana Labs 直接选择zip包下载&#xff0c;下载后解压即可&#xff0c;我之前下载过比较老的版本&#xff0c;这里就…

在 The Sandbox 设置总部,SCB 10X 和 T-POP 为 4EVE 元宇宙音乐会揭幕

协作学习为全球粉丝提供了无限的可能性&#xff0c;让他们通过革命性的元宇宙体验沉浸在泰国流行文化中。 作为 SCBX 集团背后的创新力量&#xff0c;SCB 10X 很高兴宣布与 T-POP Incorporation 展开开创性合作&#xff0c;T-POP Incorporation 是泰国流行文化在全球舞台上的领…

鸿蒙开发已成新趋势

随着华为鸿蒙操作系统的快速崭露头角&#xff0c;鸿蒙开发已然成为当前技术领域的热门新趋势。本文将深入探讨鸿蒙开发的重要性和独特优势&#xff0c;并详细介绍一些关键的鸿蒙开发技术和工具&#xff0c;以及它们对开发者个人和整个行业带来的深远影响。 首先&#xff0c;鸿蒙…

入侵redis之准备---VMware安装部署kail镜像服务器【详细包含云盘镜像】

入侵redis之准备—VMware安装部署kail镜像服务器【详细包含云盘镜像】 kail是一个很好玩的操作系统&#xff0c;不多说了哈 下载kail镜像 kail官网:https://www.kali.org/get-kali/#kali-platforms 百度云盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1PRjo…

具身智能17篇创新性论文及代码合集,2023最新

今天来聊聊人工智能领域近期的一个热门研究方向——具身智能。 具身智能&#xff08;Embodied Intelligence&#xff09;指的是机器人或智能体通过感知、理解和交互来适应环境&#xff0c;并执行任务的能力。与传统的基于规则或符号的人工智能不同&#xff0c;具身智能强调将感…

基于springboot实现私人健身与教练预约管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现私人健身与教练预约管理系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应…

hello vtk 圆柱

VTK 可视化的流程及步骤 标题引入VTK库和初始化&#xff1a; 引入 VTK 库和 AutoInit 模块&#xff0c;以便使用 VTK 的渲染和交互功能 设置背景颜色和颜色对象&#xff1a; 使用 vtkNamedColors 设置背景颜色和演员颜色。 创建圆柱体源&#xff1a; 使用 vtkCylinderSou…

蓝桥杯-01简介

文章目录 蓝桥杯简介参考资源蓝桥杯官网第15届大赛章程一、概况&#xff08;一&#xff09;大赛背景和宗旨&#xff08;二&#xff09;大赛特色&#xff08;三&#xff09;大赛项目1.Java软件开发2.C/C程序设计3.Python程序设计4.Web应用开发5.软件测试6.网络安全7.嵌入式设计与…

可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器

可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器 文章目录 可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器1. 简介2. 软件下载安装&#xff1a;3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 …

CH02_交给子类

Template Method模式 组成模板的方法被定义在父类中&#xff0c;由于这些方法是抽象方法&#xff0c;所以只查看父类的代码是无法知道这些方法最终会进行何种具体处理的。唯一能知道的就是父类如何调用这些方法。 类图 说明 AbstractClass&#xff08;抽象类&#xff09; Abs…

vue项目中通过vuex管理数据

目录 1.前言&#xff1a; 2.vuex的基础用法&#xff1a; 1.构建与挂载vue 基础模板渲染 构建仓库 2.mutations的使用 1.介绍 ​编辑 2.案列&#xff1a; 3.传参 4.辅助函数mapMutations&#xff1a; 3.module分对象的写法 介绍 建立模块&#xff1a; 访问数据的方…