Arraylist集合

保存数据会经常使用到数组,但数组存在以下几个缺陷:

  1. 长度固定;
  2. 保存的必须为同一类型的元素,(基本数据类型,或引用数据类型);
  3. 使用数组进行增加元素的步骤比较麻烦;

这个时候就需要用一个比数组要“高级的容器”来解决,这就是集合:

  1.  可以动态保存任意多个不同类型对象,使用方便;
  2. 提供了一系列方便的操作对象的方法:add、remove、set、get等;
  3.  使用集合添加、删除新元素要简单的多;
  4. 集合不能存放基本数据类型,只能存放对象的引用,对于基本数据类型的存放,都是存的包装类,即 Integer、Byte等;

<E>表示泛型

 

import java.util.ArrayList;public class Demo01 {public static void main(String[] args) {//泛型:限定集合中存储数据的基本类型//不能写int  要用Integer// ArrayList<int> list = new ArrayList<>();  //报错ArrayList<String> list = new ArrayList<>();//此时我们创建的是ArrayList的对象,而ArrayList是java已经写好的一个类// 这个类在底层做了一些处理打印对象不是地址值,而是集合中存储数据内容// 在输出的时候会拿[]把所有的数据进行包裹System.out.println(list); //[]}
}

ArrayList成员方法

方法名说明
boolean add(E e)添加元素,返回值表示是否添加成功
boolean remove(E e)删除指定元素,返回值表示是否删除成功
E remove(int index)删除指定索引的元素,返回被删除元素
E set(int index,E e)修改指定索引下的元素,返回原来的元素
E get(int index)获取指定索引的元素
int size()集合的长度,也就是集合中元素的个数

import java.util.ArrayList;public class ArraylistDemo02 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();//添加元素System.out.println(list.add("a"));//trueSystem.out.println(list);//[a]//多添加几个list.add("b");list.add("c");list.add("d");list.add("e");System.out.println(list);//[a, b, c, d, e]//获取长度System.out.println(list.size());//5//遍历for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) + " ");//a b c d e }System.out.println();//换行//删除元素System.out.println(list.remove(0));//删除索引为0的元素返回被删除元素 //aSystem.out.println(list.remove("e"));//删除知道元素e  //trueSystem.out.println(list);//[b, c, d]//修改元素System.out.println(list.set(1, "111"));//修改指定索引1的元素,返回原来的元素 //cSystem.out.println(list);//[b, 111, d]//查询System.out.println(list.get(0));//获取指定索引的元素 //b}
}

基本数据类型对应的包装类:

intInteger
charCharacter
byteByte
shortShort
longLong
floatFloat
doubleDouble
booleanBoolean

例1:

import java.util.ArrayList;public class Demo03 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();//添加元素list.add("a");list.add("b");list.add("c");list.add("d");list.add("e");//遍历System.out.print("[");for (int i = 0; i < list.size(); i++) {if (i == list.size() - 1) {System.out.print(list.get(i));} else {System.out.print(list.get(i) + ",");}}System.out.println("]");//[a,b,c,d,e]ArrayList<Integer> list2 = new ArrayList<>();list2.add(1);list2.add(2);list2.add(3);list2.add(4);list2.add(5);//遍历System.out.print("[");for (int i = 0; i < list2.size(); i++) {if (i == list2.size() - 1) {System.out.print(list2.get(i));} else {System.out.print(list2.get(i) + ",");}}System.out.println("]");//[1,2,3,4,5]ArrayList<Character> list3 = new ArrayList<>();list3.add('s');list3.add('d');list3.add('f');System.out.println(list3);//[s, d, f]}
}

例2:

import java.util.ArrayList;public class ArraylistDemo04 {public static void main(String[] args) {ArrayList<Student> list = new ArrayList<>();//创建学生对象Student s1 = new Student("nn", 5);Student s2 = new Student("hh", 6);//添加元素list.add(s1);list.add(s2);//换种方式添加list.add(new Student("pd", 7));list.add(new Student("bb", 8));//遍历集合for (int i = 0; i < list.size(); i++) {//方式一//System.out.print(list.get(i).getName() + "," + list.get(i).getAge()+" ");// 方式二Student student = list.get(i);System.out.print(student.getName() + "," + student.getAge() + " ");//nn,5 hh,6 pd,7 bb,8}}
}class Student {private String name;private int age;public Student() {}public Student(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;}
}

例3

import java.util.ArrayList;
import java.util.Scanner;public class ArraylistDemo05 {public static void main(String[] args) {ArrayList<Student> list = new ArrayList<>();//键盘录入Scanner sc = new Scanner(System.in);for (int i = 0; i < 3; i++) {Student student = new Student();System.out.println("请输入学生姓名");String name = sc.next();System.out.println("亲输入学生年龄");int age = sc.nextInt();//name,age赋值给学生对象student.setName(name);student.setAge(age);//学生对象添加到集合中list.add(student);}//遍历集合for (int i = 0; i < list.size(); i++) {//方式一System.out.print(list.get(i).getName() + "," + list.get(i).getAge() + " ");}}
}
class Student {private String name;private int age;public Student() {}public Student(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;}
}

例4

import java.util.ArrayList;/**定义Javabean类:PhonePhone属性:品牌,价格。* main方法中定义一个集合,存入三个手机对象。分别为:小米,2000。苹果,8000。华为9999.vivo 2999* 定义一个方法,将价格低于3000的手机信息返回*/
public class ArraylistDemo06 {public static void main(String[] args) {ArrayList<Phone> list = new ArrayList<>();//创建手机对象Phone p1 = new Phone("小米", 2000);Phone p2 = new Phone("苹果", 8000);Phone p3 = new Phone("华为", 9999);Phone p4 = new Phone("vivo", 2999);//添加数据list.add(p1);list.add(p2);list.add(p3);list.add(p4);ArrayList<Phone> info = getPhoneInfo(list);//遍历for (int i = 0; i < info.size(); i++) {System.out.print(info.get(i).getBrand() + "," + info.get(i).getPrice() + " ");}}public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {//返回多个数据,可以把这些数据先放到一个容器之中,再把容器返回ArrayList<Phone> resultList = new ArrayList<>();for (int i = 0; i < list.size(); i++) {if (list.get(i).getPrice() < 3000) {resultList.add(list.get(i));}}return resultList;}
}class Phone {private String brand;private int price;public Phone() {}public Phone(String brand, int price) {this.brand = brand;this.price = price;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}
}

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

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

相关文章

SQL | 高级数据过滤

5-高级数据过滤 通过组合WHERE子句&#xff0c;建立功能更强的检索语句。 5.1-组合WHERE子句 前面写的都是单一条件下的WHERE子句&#xff0c;SQL语句允许给出多个WHERE子句来组合检索&#xff0c;这些WHERE子句通过AND子句或者OR子句进行连接。 操作符&#xff08;operato…

教你如何使用AES对接口参数进行加密

教你如何使用AES对接口参数进行加密 前言 我们作为程序猿&#xff0c;在浏览网站的时候偶尔也会打开控制台看看请求的接口&#xff0c;我们会发现有些接口的传输是 “乱码” &#xff0c;那么这个乱码究竟是什么呢&#xff1f;为什么要这么做&#xff1f; 其实这个所谓的 “…

深度学习常用的python库学习笔记

文章目录 数据分析四剑客Numpyndarray数组和标量之间的运算基本的索引和切片数学和统计方法线性代数 PandasMatplotlibPIL 数据分析四剑客 Numpy Numpy中文网 ndarray 数组和标量之间的运算 基本的索引和切片 数学和统计方法 线性代数 Pandas Pandas中文网 Matplotlib Mat…

3.2 Tomcat基础

1. Tomcat概述 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器。 Tomcat版本&#xff1a;apache-tomcat-8.5.76。 2.IDEA集成Tomcat 第一步 第二步 第三步 ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff0…

【Kubernetes】神乎其技的K8s到底是什么,为什么被越来越多人使用

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

最容易理解的C51单片机4位密码锁示例代码(附proteus电路图)

说明&#xff1a;开机启动就是上图这样的&#xff0c;密码正确显示P&#xff08;pass&#xff09;,密码错误显示E&#xff08;error&#xff09; #include "reg51.h" #include "myheader.h" #define uchar unsigned char long int sleep_i0; int pwd[4]{0…

用HTML+JavaScript构建C++类(Class)代码转换为MASM32代码的平台

一、需求分析 在使用MASM32编写Windows应用程序时&#xff0c;经常要调用Windows API接口函数 和 相应的数据结构&#xff0c;这些数据结构中有很多是类&#xff08;Class&#xff09;&#xff0c;对于那些在MASM32没有定义的类&#xff0c;我们需要自己来转换。比如&#xff…

编写一个指令(v-focus2end)使输入框文本在聚焦时焦点在文本最后一个位置

项目反馈输入框内容比较多时候&#xff0c;让鼠标光标在最后一个位置&#xff0c;心想什么奇葩需求&#xff0c;后面试了一下&#xff0c;是有点影响体验&#xff0c;于是就有了下面的效果&#xff0c;我目前的项目都是若依的架子&#xff0c;用的是vue2版本。vue3的朋友想要使…

OneFlow 中的 Softmax

Softmax 是深度学习模型中的常见算子。PyTorch 的 Softmax 算子直接调用 cuDNN 的接口。而 OneFlow 内部针对输入数据的类别数量&#xff0c;采用3个 kernel 来分别处理&#xff0c;在多数情况下都可以获得比 cuDNN 更优的性能表现。测试结果可见 如何实现一个高效的Softmax CU…

Kubernetes Calico

Calico以其性能、灵活性和网络策略而闻名&#xff0c;不仅涉及在主机和Pod之间提供网络连接&#xff0c;而且还涉及网络安全性和策略管理。(还可以配置防火墙规则来隔离不同应用的网络) 对于同网段通信&#xff0c;基于第3层&#xff0c;Calico使用BGP路由协议在主机之间路由数…

uni-app:实现点击按钮,进行数据累加展示(解决数据过多,导致出错)

效果 代码 核心代码 一、标签显示 <!-- 加载更多 --> <view class"load_more" v-if"info.length > pageNum * pageSize" tap"loadMore">加载更多 </view> v-if"info.length > pageNum * pageSize"&#xf…

网站SSL安全证书是什么及其重要性

网站SSL安全证书具体来说是一个数字文件&#xff0c;是由受信任的数字证书颁发机构&#xff08;CA机构&#xff09;进行审核颁发的&#xff0c;其中包含CA发布的信息&#xff0c;该信息表明该网站已使用加密连接进行了安全保护。 网站SSL安全证书也被称为SSL证书、https证书和…