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

JAVA学习笔记——集合的概念和习题

1、集合的概念

集合不能直接存储基本数据类型(转换为包装类可以存),可以存储引用数据类型,存储长度可以自动去增加或减少

成员方法:

在删除的时候,如果出现要删除的元素有相同的两个及以上的值,那么只删除前一个,后一个依然保留

返回的是被删除的元素的值

修改元素,第一个参数是索引值,第二个参数是要修改的值,运行之后成功修改

查询这个索引值对应的元素并输出

查询集合的长度  方法

2、习题

(1)遍历

代码如下:

package com.xzhao.test.cat;import java.util.ArrayList;public class Together {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("abcdefg");list.add("hijklmn");list.add("opqrst");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("]");}}

结果如下:

(2)添加数字进行遍历

理论知识:

代码如下:

ArrayList<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
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("]");

结果如下:

(3)添加学生对象并遍历

解题思路:首先创建一个学生类,将构造函数都弄好。之后在主程序中先创建3个对象,之后使用遍历的方法,输出的时候要使用get方法才能将元素的姓名和年龄都输出

代码如下:

学生类:

package com.xzhao.test.cat;public class Stud {private String name;private int age;public Stud() {}public Stud(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;}
}主程序:
ArrayList<Stud> list=new ArrayList<>();
Stud s1=new Stud("张三",18);
Stud s2=new Stud("李四",20);
Stud s3=new Stud("王五",22);
list.add(s1);
list.add(s2);
list.add(s3);
for (int i = 0; i < list.size(); i++) {Stud stu=list.get(i);System.out.println(stu.getName()+","+stu.getAge());//类是自己编写需要使用get方法才能输出姓名和年龄
}

结果如下:

在上述代码上添加信息是键盘输入:

代码如下:主要注意两个点,一个是创建学生对象要放在for循环里边,不然只会创建一个地址,后续会对同一个地址值里的内容进行覆盖

还有就是在输出信息的时候,直接输出显示的是地址值,应该使用get方法进行输出

Scanner sc = new Scanner(System.in);
ArrayList<Stud> list=new ArrayList<>();
for(int i=0;i<5;i++){System.out.println("请输入第"+(i+1)+"个学生的姓名和年龄:");String name=sc.nextLine();int age=sc.nextInt();sc.nextLine();//清空缓冲区,由于在读取数据时,年龄输入之后按回车,age只读取数字,回车留在了缓冲区,导致下一个再次读取名字时,会将这个回车读入到姓名Stud stu=new Stud(name,age);list.add(stu);
}
for (int i = 0; i < list.size(); i++) {Stud stu=list.get(i);System.out.println(stu.getName()+","+stu.getAge());//类是自己编写需要使用get方法才能输出姓名和年龄
}

结果如下所示:

(4)添加用户对象并判断是否存在

解题思路:遍历比较看是否id值一致即可

代码如下:

ArrayList<User> list = new ArrayList<>();//因为是用户对象,所以前面的括号中是类的名称!User u1=new User(1,"zhangsan","123456");User u2=new User(2,"lisi","asdfgh");User u3=new User(3,"wangwu","123asd");list.add(u1);list.add(u2);list.add(u3);boolean flag=right(list,4);//定义一个方法判断是否存在id号一致的对象System.out.println(flag);}public static boolean right(ArrayList<User> lb,int n){for(int i=0;i<lb.size();i++){User u=lb.get(i);//新定义一个用户对象,将每个元素值赋值给uif(n==u.getId()){return true;}}return false;}
}

结果如下:

加一个需求:

解题思路:只需要更改方法中的return部分即可

代码如下;

结果如下:

(5)添加对象并返回数据

解题思路:主要难点在方法的类型应该定义成集合的类型,其余跟上面一样

代码如下:

手机类:

package com.xzhao.test.cat;public class Pho {private String brand;private int price;public Pho() {}public Pho(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;}
}主程序:
ArrayList<Pho> list=new ArrayList<>();Pho p1=new Pho("小米",1000);Pho p2=new Pho("苹果",8000);Pho p3=new Pho("锤子",2999);list.add(p1);list.add(p2);list.add(p3);ArrayList<Pho> pp=information(list);for(int i=0;i<pp.size();i++){Pho p=pp.get(i);System.out.println(p.getBrand()+","+p.getPrice());}
}public static ArrayList<Pho> information(ArrayList<Pho> li){ArrayList<Pho> Phone=new ArrayList<>();//返回的值不止一个值,可以放到集合中返回for(int i=0;i<li.size();i++){Pho p=li.get(i);if(p.getPrice()<3000){Phone.add(li.get(i));}}return Phone;
}

结果如下:

通过集合学到了很多之前数组不能做的事,譬如元素的删除,以及长度的定义,集合确实要更方便一些!!!

http://www.dtcms.com/a/601471.html

相关文章:

  • 商城网站开发方案书导购类网站备案
  • leetcode 290. 单词规律 python
  • D037 vue+django三国演义知识图谱可视化系统
  • 连接一个新的服务器时,打开PyCharm时报错:报错内容是服务器磁盘或配额满了
  • 传媒有限公司免费网站武安市精品网站开发
  • 如何从多源业务表对商家进行综合评估?
  • DELMIA Role: RFE - Operations Experience Manager
  • 灭屏使用对讲,概率性出现无声
  • 问答系统网站模板天津建设工程交易信息网
  • GitHub 热榜项目 - 日榜(2025-11-12)
  • 继续访问这个网站字体安装wordpress
  • Java 进阶:反射机制深度解析
  • 如何开发高性能直播美颜sdk?人脸检测、美型算法与渲染优化详解
  • StreamAPI,取出list中的name属性,返回一个新list
  • SSM基于web的佳茗天香茶品销售平台的设计与实现z2m56(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 请别人做网站需要注意什么问题公司做网站怎么做账
  • 茂名网站制作策划如何查看用wordpress建的站点
  • 【湿地数据集4】基于 TOPMODEL模型的1980–2020年全球湿地动态数据集 GWDD
  • C++重点知识梳理(下)
  • 苍穹外卖(第七天)
  • 新乡网站建设制作报价方案网站如何布局
  • 安全狗 网站打不开成都网络营销搜索推广
  • 预测汽车燃油效率——线性回归
  • 【自然语言处理】基于深度学习基的句子边界检测算法
  • 链接脚本(Linker Scripts)
  • 素材网站整站下载WordPress做图床
  • 企业网站相关案例网站建设域名怎么用
  • 太原专业做网站wordpress主体开发
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十八)Ansible自动化模块--安装与入门
  • 【C++11】Lambda表达式+新的类功能