ArrayList集合
1. ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
2. ArrayList 继承了 AbstractList ,并实现了 List 接口。
3. ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.ArrayList; // 引入 ArrayList 类
ArrayList<E> objectName =new ArrayList<>(); // 初始化
4. ArrayList 是一个数组队列,提供了相关的添加、删除、修改等功能。
5. ArrayList 中的元素实际上是对象,在以上实例中,数组列表元素都是字符串 String 类型。
如果我们要存储其他类型,而 <E> 只能为引用数据类型,这时我们就需要使用到基本类型的包装类。
基本类型对应的包装类表如下:
基本类型 | 引用类型 |
---|---|
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
访问 ArrayList 中的元素可以使用 get() 方法:
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("weipinhui");
sites.add("pinduoduo");
sites.add("Taobao");
sites.add("jingdong");
System.out.println(sites);
}
注意:数组的索引值从 0 开始。
ArrayList 类提供了很多有用的方法,添加元素到 ArrayList 可以使用 add() 方法
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("weipinhui");
sites.add("pinduoduo");
sites.add("Taobao");
sites.add("jingdong");
sites.set(2, "Weixin"); // 第一个参数为索引位置,第二个为要修改的值
System.out.println(sites);
}
如果要修改 ArrayList 中的元素可以使用 set() 方法:
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("weipinhui");
sites.add("pinduoduo");
sites.add("Taobao");
sites.add("jingdong");
sites.set(2, "Weixin"); // 第一个参数为索引位置,第二个为要修改的值
System.out.println(sites);
}
如果要删除 ArrayList 中的元素可以使用 remove() 方法:
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("weipinhui");
sites.add("pinduoduo");
sites.add("Taobao");
sites.add("jingdong");
sites.remove(3); // 删除第四个元素
System.out.println(sites);
}
如果要计算 ArrayList 中的元素数量可以使用 size() 方法:
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("weipinhui");
sites.add("pinduoduo");
sites.add("Taobao");
sites.add("jingdong");
System.out.println(sites.size());
}
使用Scanner、Random、ArrayList完成一个不重复的点名程序:
public static void main(String[] args) {
//可以使用Arrays的asList实现序列化一个集合
List<String> list= Arrays.asList("叶枫","饶政","郭汶广","王志刚","时力强","柴浩阳","王宁","雷坤恒",
"贠耀强","齐东豪","袁文涛","孙啸聪","李文彬","孙赛欧","曾毅","付临",
"王文龙","朱海尧","史艳红","赵冉冉","詹梦","苏真娇","张涛","王浩",
"刘发光","王愉茜","牛怡衡","臧照生","梁晓声","孔顺达","田野","宫帅龙",
"高亭","张卓","陈盼盼","杨延欣","李蒙惠","瞿新成","王婧源","刘建豪",
"彭习峰","胡凯","张武超","李炳杰","刘传","焦泽国");
//把list作为参数重新构建一个新的ArrayList集合
ArrayList<String> names=new ArrayList<>(list);
//使用Scanner、Random、ArrayList完成一个不重复的点名程序
Random random=new Random();
Scanner scanner=new Scanner(System.in);
while(true){
//如果集合中没有元素了别结束循环
if(names.size()==0){
System.out.println("已完成所有学生抽查,抽查结束请重新开始");
break;
}
System.out.println("确认点名请输入吧Y/y");
String input=scanner.next();
if(input.equals("Y")||input.equals("y")){
//随机一个集合下标
int index=random.nextInt(names.size());
System.out.println(""+names.get(index));
//该学生已经被抽到,把他从集合中移除
names.remove(index);
}else{
System.out.println("本次抽查结束");
break;
}
}
}