当前位置: 首页 > news >正文

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.lryc.cn/news/127629.html

相关文章:

  • https的原理和方案
  • VTK 判断一个 点 是否在一个模型 stl 内部 vtk 点是否在内部 表面 寻找最近点
  • 【数据结构OJ题】链表的回文结构
  • Nginx常见的三个漏洞
  • 爬虫逆向实战(十六)--某建筑市场平台
  • 用Python做一个滑雪小游戏
  • EXCEL按列查找,最终返回该列所需查询序列所对应的值,VLOOKUP函数
  • java编译报错,get方法报错
  • 可以降低CPU负载的网络传输技术——LSO
  • [管理与领导-25]:IT基层管理者 - 团队管理 - 如何留人, 如何留住关键人才
  • 【Redis】Redis 的学习教程(二)之 Jedis
  • VB+SQL银行设备管理系统设计与实现
  • Python系统学习1-9-类一之类语法
  • PHP“深入浅出”淘宝商品详情数据接口获取方法,淘宝API申请指南
  • 线性代数再回顾
  • (白帽黑客)自学笔记
  • 基于长短期神经网络的客流量预测,基于长短期神经网络的超短期客流量预测,lstm详细原理
  • 前端文件下载通用方法
  • htmlCSS-----案例展示
  • Android进阶之路 - 去除EditText内边距
  • ModStartCMS v7.0.0 多语言开发优化,多个常用组件升级
  • 一百五十八、Kettle——Kettle各版本及其相关安装包分享(网盘链接,不需积分、不需验证码) 持续更新、持续分享
  • 【通俗易懂】如何使用GitHub上传文件,如何用git在github上传文件
  • 计算机视觉之三维重建(二)(摄像机标定)
  • PHP面向对象面试题
  • 6G 特点及表现
  • 【Git】(一)基本操作
  • Github下载任意版本的VsCode
  • ThreadLocal(超详细介绍!!)
  • stable diffusion安装包和超火使用文档,数字人制作网址