二、集合是什么?
Java集合类存放在java.util包中,是一个用来存放对象的容器。
注意:
1.集合只能存放对象。比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。
2.集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。
3.集合可以存放不同类型,不限数量的数据类型。
三、Java集合框架图层次图

ArrayList示例
package Z.Kbzl.jihe;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ListDemo01 {
public static void main(String[] args) {
//ArrayList 数组结构,是有序(连续),可以通过下标来访问..
//ArrayList 集合有序的,大小可变,查询效率高.
//1.定义一个集合对象ArrayList
ArrayList list=new ArrayList();
//2.给对象中添加数据
//list.add(1);//下标0
//list.add("list");//下标1
//list.add("123");//下标2
News news=new News(2, "三国演义", "罗贯中", new Date());//下标3
list.add(news);
list.add(new News(3, "水浒传", "施耐庵",new Date()));//下标4
list.add(new News(4, "红楼梦", "曹雪芹",new Date()));//下标5
//3.获取集合中数据条数
System.out.println(list.size());//6条数据,因为上面添加了6条
//4.打印显示集合数据
//System.out.println(list.get(3));//打印下标3的数据
for(Object i:list) {//利用增强for打印所有数据
System.out.println(i);
}
System.out.println("=========================");
//删除list集合数据
//list.remove(0);//根据下标删除
//list.clear();//清空集合中所有数
for (int i = 0; i < list.size(); i++) {
News n=(News)list.get(i);
System.out.println(n);
System.out.println(n.getName()+"——"+n.getAuthor());
}
}
}
News id=2, name=三国演义, author=罗贯中, time=Mon Nov 15 18:15:18 GMT+08:00 2021
三国演义——罗贯中
News id=3, name=水浒传, author=施耐庵, time=Mon Nov 15 18:15:18 GMT+08:00 2021
水浒传——施耐庵
News id=4, name=红楼梦, author=曹雪芹, time=Mon Nov 15 18:15:18 GMT+08:00 2021
红楼梦——曹雪芹
{/collapse-item}
利用ArrayList做一道题
我们先建一个学生类
package Z.Kbzl.jihe;
public class Student {
int xh;//学号
String name;//姓名
String age;//性别
int sex;//年龄
String site;//地址
public Student(int xh, String name, String age, int sex, String site) {
super();
this.xh = xh;
this.name = name;
this.age = age;
this.sex = sex;
this.site = site;
}
public void getStudent() {
System.out.println("学号:"+xh);
System.out.println("姓名:"+name);
System.out.println("性别:"+age);
System.out.println("年龄:"+sex);
System.out.println("地址:"+site+"\n");
}
}
再建一个测试类
package Z.Kbzl.jihe;
import java.util.ArrayList;
import java.util.LinkedList;
public class StudentText {
public static void main(String[] args) {
//1.定义一个集合对象ArrayList
ArrayList stu=new ArrayList();
//2.add new学生类调用构造方法进行赋值
stu.add(new Student(12345678, "新一", "男", 18, "咸阳"));
stu.add(new Student(14725836, "张三", "男", 18, "东北"));
stu.add(new Student(15935746, "李四", "男", 18, "四川"));
stu.add(new Student(95135784, "牛马", "男", 18, "草原"));
System.out.println("班里一共有"+stu.size()+"位学生");
System.out.println(" ");
//循环打印每个人的信息
for(Object i:stu) {
Student s=(Student)i;//强制转换学生类
s.getStudent();
}
}
}
这样就实现了简单的存储
学号:12345678
姓名:新一
性别:男
年龄:18
地址:咸阳
学号:14725836
姓名:张三
性别:男
年龄:18
地址:东北
学号:15935746
姓名:李四
性别:男
年龄:18
地址:四川
学号:95135784
姓名:牛马
性别:男
年龄:18
地址:草原
{/collapse-item}
再来一道复杂一点的题
一样先建一个学生类,根据题目需要写一些属性和方法
package Z.Kbzl.jihe;
public class Student2 {
String name;//姓名
int sex;//年龄
int a;//学生成绩
public Student2(String name, int a, int sex) {
super();
this.name = name;
this.a = a;
this.sex = sex;
}
@Override//重写toString方法
public String toString() {
return "姓名:"+name+"\n年龄:"+sex+"岁"+"\n成绩:"+a+"分"+"\n";
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public Student2() {
// TODO Auto-generated constructor stub
}
}
我们再去建一个测试类
package Z.Kbzl.jihe;
import java.util.ArrayList;
public class Student2Text {
public static void main(String[] args) {
//1.定义一个集合对象ArrayList
ArrayList stu2=new ArrayList();
//2.add new学生类调用构造方法进行赋值
stu2.add(new Student2("小赵", 21, 20));
stu2.add(new Student2("张三", 32, 17));
stu2.add(new Student2("李四", 41, 16));
stu2.add(new Student2("阿花", 61, 19));
stu2.add(new Student2("小冯", 94, 19));
stu2.add(new Student2("小周", 35, 19));
stu2.add(new Student2("新一", 91, 17));
System.out.println("满足18岁的成员如下");
System.out.println(" ");
for(Object i:stu2) {
Student2 s=(Student2)i;
if(s.getSex()>18) {//判断年龄大于18
System.out.println(s.toString());
}
}
System.out.println(" ");
System.out.println("最大成绩的学员是");
Student2 sv=(Student2)stu2.get(0);
int max=sv.getA();//最大
int maxindex=0;//记录下标
for (int i = 0; i <stu2.size(); i++) {
Student2 ss=(Student2)stu2.get(i);
int sc=ss.getA();
if(sc>max) {//求最大
max=sc;//最大成绩
maxindex=i;
}
}
System.out.println(stu2.get(maxindex));//打印最大
System.out.println(" ");
System.out.println("最小成绩的学员是");
int min=sv.getA();//最小
int minindex=0;//记录下标
for (int i = 0; i <stu2.size(); i++) {
Student2 ss=(Student2)stu2.get(i);
int sc=ss.getA();
if(sc<min) {//求最小
min=sc;//最小成绩
minindex=i;
}
}
System.out.println(stu2.get(minindex));//打印最小
System.out.println(" ");
System.out.println("已经删除成绩小于60的学生了");
for(Object i:stu2) {
Student2 s=(Student2)i;
if(s.getA()>60) {//判断成绩小于60
System.out.println(s.toString());
}
}
System.out.println(" ");
int aa=0;//记录总成绩
for(Object i:stu2) {//记录总成绩
Student2 s=(Student2)i;
aa+=s.getA();
}
System.out.println("平均成绩是:"+aa/stu2.size());//推算平均成绩
System.out.println("平均成绩的1.5倍是:"+(aa/stu2.size())*1.5);//推算平均成绩的1.5倍
System.out.println("大于平均成绩1.5倍的人有:");
System.out.println(" ");
for(Object i:stu2) {
Student2 s=(Student2)i;
if(s.getA()>aa/stu2.size()*1.5) {//判断平均成绩的1.5倍
System.out.println(s.toString());
}
}
}
}
姓名:小赵
年龄:20岁
成绩:21分
姓名:阿花
年龄:19岁
成绩:61分
姓名:小冯
年龄:19岁
成绩:94分
姓名:小周
年龄:19岁
成绩:35分
最大成绩的学员是
姓名:小冯
年龄:19岁
成绩:94分
最小成绩的学员是
姓名:小赵
年龄:20岁
成绩:21分
已经删除成绩小于60的学生了
姓名:阿花
年龄:19岁
成绩:61分
姓名:小冯
年龄:19岁
成绩:94分
姓名:新一
年龄:17岁
成绩:91分
平均成绩是:53
平均成绩的1.5倍是:79.5
大于平均成绩1.5倍的人有:
姓名:小冯
年龄:19岁
成绩:94分
姓名:新一
年龄:17岁
成绩:91分
{/collapse-item}
本文共 1352 个字数,平均阅读时长 ≈ 4分钟
java集合