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,一经查实,立即删除!

相关文章

关于torch.backends.cudnn.benchmark = True

cuDNN 是英伟达专门为深度神经网络所开发出来的 GPU 加速库&#xff0c;针对卷积、池化等等常见操作做了非常多的底层优化&#xff0c;比一般的 GPU 程序要快很多。大多数主流深度学习框架都支持 cuDNN&#xff0c;PyTorch 自然也不例外。在使用 GPU 的时候&#xff0c;PyTorch…

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;…

CountDownLatch和CyclicBarrier源码详解

其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、CountDownLatch和CyclicBarrier 二、CountDownLatch源码分析 三、CyclicBarrier源码分析 四、总结 前言 我现在有个场景:现在我有50个任务&…

【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) 是一种将…

大数据-之LibrA数据库系统告警处理(ALM-37006 Coordinator进程异常)

告警解释 当出现如下情况时&#xff0c;产生该告警&#xff1a; CN所在机器发生硬件故障&#xff08;断电、硬盘损坏等&#xff09;。CN实例数据目录中的postgresql.conf配置文件不存在或者其中某个配置参数不正确。CN实例线程无法监听IP&#xff0c;或者无法绑定监听端口。C…

【Makefile】和【CMake】的区别

Makefile 和 CMake 的区别 Makefile 和 CMake 都是用于构建项目的工具&#xff0c;但它们有一些区别。 Makefile: 语法&#xff1a; Makefile 使用自己的语法规则&#xff0c;包括规则、目标、依赖等。这是一种特定于 make 工具的语法。 平台依赖&#xff1a; Makefile 是平…

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

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

案例:某电子产品电商平台借助监控易保障网络正常运行

一、背景介绍 某电子产品电商平台是一家专注于电子产品销售的电商平台&#xff0c;拥有庞大的用户群体和丰富的产品线。随着业务规模的不断扩大&#xff0c;网络设备的数量和复杂性也不断增加&#xff0c;网络故障和性能问题时有发生&#xff0c;给平台的稳定运行带来了很大的挑…

项目中高并发如何处理

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

[原创][第I部分][编程基础]我的C++ 98复习并升级到C++20的复习旅途

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

python激活python38

py38是我建立的anaconda下的一个python3.8环境。 命令行里使用conda activate py38会出现&#xff1a; conda activate error: argument COMMAND: invalid choice 因为condat已经移除了该命令。 执行 activate py38没报错&#xff0c;但是没有转换到py38环境。 使用 sour…

Spring源码解读之创建bean

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

关于ai大模型是否开源的讨论

开源和闭源&#xff0c;两种截然不同的开发模式&#xff0c;对于大模型的发展有着重要影响。开源让技术共享&#xff0c;吸引了众多人才加入&#xff0c;推动了大模的创新。而闭源则保护了商业利益和技术优势&#xff0c;为大模型的商业应用提供了更好的保障。 一、开源和闭源的…

人工智能学习1

一.人工智能概述 1.AI的基础学科包括&#xff1a;数学&#xff08;离散、模糊&#xff09;、思维科学&#xff08;认知心理、逻辑思维学、形象思维学&#xff09;和计算机&#xff08;硬件、软件&#xff09;等。 2.新一代人工智能呈现出“深度学习、跨界融合、人机协同、群智…

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

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

单机多卡训练

参考几个不错的帖子&#xff08;还没来得及整理&#xff09;&#xff1a; 基于pytorch多GPU单机多卡训练实践_多卡训练效果不如单卡-CSDN博客 关于PyTorch单机多卡训练_能用torch.device()实现多卡训练吗-CSDN博客 Pytorch多机多卡分布式训练 - 知乎 (zhihu.com) 当代研究生…