ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
ArrayList 继承了 AbstractList ,并实现了 List 接口。
一、添加元素
ArrayList 类提供了很多有用的方法,添加元素到 ArrayList 可以使用 add() 方法
代码如下:
public class testList {
public static void main(String[] args) {
//创建ArrayList对象,泛型为String类型
ArrayList<String> list = new ArrayList<>();
//添加元素
list.add("添");
list.add("加");
list.add("元");
list.add("素");
System.out.println(list);
}
}
运行结果:
[添, 加, 元, 素]
二、完成随机抽取一个名字
知道了如何使用ArrayList添加,那么结合Scanner类和Random类完成随机抽取一个名字
1.使用Arrays.aslist录入内容
public static void main(String[] args) {
List<String> list = Arrays.asList(
"佐菲","初代","赛文","杰克","艾斯","泰罗","奥特之父","奥特之母","雷欧","阿斯特拉",
"奥特之王","乔尼亚斯"," 爱迪"," 史考特"," 查克"," 贝斯"," 葛雷"," 帕瓦特"," 哉阿斯"," 迪迦 ",
"戴拿","盖亚","阿古茹","纳伊斯","高斯","杰斯提斯","雷杰多","奈克斯特","奈克赛斯","诺亚",
"奈欧斯","赛文21","麦克斯","杰诺","梦比优斯","希卡利","赛罗","赛迦","银和","维克特利","捷德",
"欧布","罗索","布鲁","格丽乔");
2.把list作为参数重新构建一个ArrayList集合
public static void main(String[] args) {
List<String> list = Arrays.asList(
"佐菲","初代","赛文","杰克","艾斯","泰罗","奥特之父","奥特之母","雷欧","阿斯特拉",
"奥特之王","乔尼亚斯"," 爱迪"," 史考特"," 查克"," 贝斯"," 葛雷"," 帕瓦特"," 哉阿斯"," 迪迦 ",
"戴拿","盖亚","阿古茹","纳伊斯","高斯","杰斯提斯","雷杰多","奈克斯特","奈克赛斯","诺亚",
"奈欧斯","赛文21","麦克斯","杰诺","梦比优斯","希卡利","赛罗","赛迦","银和","维克特利","捷德",
"欧布","罗索","布鲁","格丽乔");
ArrayList<String> name=new ArrayList<>(list);
3.使用Scanner、Random、ArrayList完成一个不重复的点名程序
public static void main(String[] args) {
List<String> list = Arrays.asList(
"佐菲","初代","赛文","杰克","艾斯","泰罗","奥特之父","奥特之母","雷欧","阿斯特拉",
"奥特之王","乔尼亚斯"," 爱迪"," 史考特"," 查克"," 贝斯"," 葛雷"," 帕瓦特"," 哉阿斯"," 迪迦 ",
"戴拿","盖亚","阿古茹","纳伊斯","高斯","杰斯提斯","雷杰多","奈克斯特","奈克赛斯","诺亚",
"奈欧斯","赛文21","麦克斯","杰诺","梦比优斯","希卡利","赛罗","赛迦","银和","维克特利","捷德",
"欧布","罗索","布鲁","格丽乔");
ArrayList<String> name=new ArrayList<>(list);
Random ra=new Random();
Scanner sc=new Scanner(System.in);
4.循环判断 如果集合中没有元素了,则结束循环
public static void main(String[] args) {
List<String> list = Arrays.asList(
"佐菲","初代","赛文","杰克","艾斯","泰罗","奥特之父","奥特之母","雷欧","阿斯特拉",
"奥特之王","乔尼亚斯"," 爱迪"," 史考特"," 查克"," 贝斯"," 葛雷"," 帕瓦特"," 哉阿斯"," 迪迦 ",
"戴拿","盖亚","阿古茹","纳伊斯","高斯","杰斯提斯","雷杰多","奈克斯特","奈克赛斯","诺亚",
"奈欧斯","赛文21","麦克斯","杰诺","梦比优斯","希卡利","赛罗","赛迦","银和","维克特利","捷德",
"欧布","罗索","布鲁","格丽乔");
ArrayList<String> name=new ArrayList<>(list);
Random ra=new Random();
Scanner sc=new Scanner(System.in);
while (true){
//如果集合中没有元素了,则结束循环
if(name.size()==0){
System.out.println("已完成所有名字抽查,抽查结束请重新开始");
break;
}
System.out.println("确认点名请输入Y/y");
String input=sc.next();
if(input.equals("y") || input.equals("y")){
//随机一个集合下标
int index=ra.nextInt(name.size());
System.out.println("本次抽到"+name.get(index));
//该名字已被抽到,把他从集合中移除
name.remove(index);
}else {
System.out.println("本次抽查结束");
break;
}
}
}
如果不想继续抽取则随便输入另外一个字母结束抽查