ArrayList集合概述和基本使用
package com.Demo03;
import java.util.ArrayList;
/*
数组的长度不能改变
但是ArrayList集合的长度是可以随意变化的
对于ArrayList来说有一个尖括号<E>代表泛型
泛型:也就是装在集合当中的所有元素,全部都是统一的什么类型
【注意】:泛型只能是引用类型,不能是基本类型
【注意事项】
对于ArrayList来说,ArrayList直接打印得到的不是地址值,而是内容
如果内容是空,得到是空的中括号 []
*/
public class Demo01ArrayList {
public static void main(String[] args) {
//创建了一个ArrayList集合,集合的名称是list,里面装的全部都是String类型的数据
//备注:从JDK1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的
ArrayList<String> list = new ArrayList<>();
System.out.println(list); //[]
//向集合当中添加一些数据需要用到add方法
list.add("LILI");
list.add("OPOP");
// list.add(100) ----错误写法
System.out.println(list); //[LILI, OPOP]
}
}
ArrayList集合的常用方法和遍历集合
package com.Demo03;
import java.util.ArrayList;
/*
ArrayList当中的常用方法有:
public boolean add(E e){}:向集合当中添加元素,参数的类型和泛型一致,返回值是布尔值(添加的操作是否成功)
【备注】:对于ArrayList集合来说,添加的操作一定是成功的,所以一返回值可用可不用;
但是对于其他集合(今后学习),add添加操作不一定成功
public E get(int Index){}:向集合当中获取元素,参数是索引编号,返回值就是对应的位置值
public E remove(int Index){}:从集合当中删除元素,参数是索引编号,返回值就是被删除的元素
public int size():获取元素的尺寸长度,返回值就是集合中包含的元素个数
*/
public class Demo02ArrayList {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list); //[]
//向集合中添加元素:add
boolean success =list.add("huahua");
System.out.println(list); //[huahua]
System.out.println("添加的操作是否成功:"+success); //true
//从集合中获取元素:get,索引值从0开始
list.add("yuanyuan");
System.out.println("此时list的值是:"+list);
String name=list.get(1); //yuanyuan
System.out.println("第1号索引位置:"+name);
//从集合中删除元素:remove,索引值从0开始
String one=list.remove(0); //huahua
System.out.println("被删除的人是:"+one);
System.out.println("删除之后list的值:"+list);
//获取集合的长度:size
int size=list.size();
System.out.println("集合的长度:"+size);
}
}
遍历集合
package com.Demo03;
import java.util.ArrayList;
public class Demo03ArrayList {
public static void main(String[] args) {
ArrayList<String> list =new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
//遍历集合
for (int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
ArrayList存储基本数据
package com.Demo03;
import java.util.ArrayList;
/*
如果希望向集合ArrayList当中存放基本数据类型,必须使用基本数据类型对应的“包装类”
基本类型 包装类(引用类型,包装类都位于java.lang下)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
从JDK1.5+开始,支持自动装箱、自动拆箱
自动装箱:基本类型--->包装类型
自动拆箱:包装类型--->基本类型
*/
public class Demo04ArrayList {
public static void main(String[] args) {
ArrayList<String> listA = new ArrayList<>();
// ArrayList<int> listB = new ArrayList<int>(); ---错误写法
ArrayList<Integer> listB = new ArrayList<>();
listB.add(100);
listB.add(200);
System.out.println(listB); //[100,200]
int num=listB.remove(1);
System.out.println("删除的数据为:"+num);
}
}
练习
题目一:生成6个1-33之间的随机整数,添加到集合并遍历集合
package com.Demo03;
import java.util.ArrayList;
import java.util.Random;
public class Demo05ArrayListWork {
public static void main(String[] args) {
Random r=new Random();
ArrayList<Integer> listA = new ArrayList<>();
int i =1;
//生成集合
while (i<=6){
int num = r.nextInt(32)+1;
listA.add(num);
i++;
}
System.out.println("生成的集合为:"+listA);
//遍历集合
for(int j=0;j<listA.size();j++){
System.out.println("第"+j+"个元素为:"+listA.get(j));
}
}
}
题目二:自定义4个学生对象,添加到集合中,并遍历
package com.Demo03;
import java.util.ArrayList;
public class Demo05ArrayListWork01 {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Student one = new Student("lili",15);
Student two = new Student("huhu",19);
Student three = new Student("keke",25);
list.add(one);
list.add(two);
list.add(three);
//遍历集合
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println("姓名:"+stu.getName()+",年龄:"+stu.getAge());
}
}
}
题目二:定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}括起集合,使用@分隔每一个元素,格式参照{元素@元素@元素}
package com.Demo03;
import java.util.ArrayList;
/*
定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}括起集合,
使用@分隔每一个元素,格式参照{元素@元素}
*/
public class Demo05ArrayListWork02 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
printArrayList(list);
}
/*
定义方法的三要素:
返回值类型:只是进行打印而已,没有运算,没有结果,只用void
方法名称:printArrayList
参数列表:ArrayList
*/
public static void printArrayList(ArrayList<String> list){
System.out.print("{");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
if(i==list.size()-1){
System.out.println("}");
}else{
System.out.print("@");
}
}
}
}
题目三:用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合中,要求使用自定义的方法进行筛选
package com.Demo03;
/*
分析:
1.需要创建一个大集合,用来存储int数字,<Integer>
2.随机数字用Random nextInt
3.循环20次,把随机数字放入大集合,for循环、add方法
4.定义一个方法,用来进行筛选
筛选:根据大集合,筛选符合条件的元素,得到小集合
三要素:
返回类型:ArrayList小集合(里面元素个数不确定)
方法名称:getSmallList
参数列表:ArrayList大集合(装着20个随机数字)
5.判断(if)是偶数:num%2==0
6.如果是偶数,就放到小集合中,否则就不放
*/
import java.util.ArrayList;
import java.util.Random;
public class Demo05ArrayListWork03 {
public static void main(String[] args) {
ArrayList<Integer> bigList = new ArrayList<>();
Random r= new Random();
for (int i = 0; i < 20; i++) {
int randomNum=r.nextInt(100)+1;
bigList.add(randomNum);
}
System.out.println(bigList);
ArrayList<Integer> smallList=getSmallList(bigList);
System.out.println("小集合中的元素个数为:"+smallList.size());
System.out.println(smallList);
}
//整改方法接收大集合参数,返回小集合结果
public static ArrayList<Integer> getSmallList(ArrayList<Integer> bigList){
//创建一个小集合 用来装筛选结果
ArrayList<Integer> smallList = new ArrayList<>();
for (int i = 0; i < bigList.size(); i++) {
if (bigList.get(i)%2==0){
smallList.add(bigList.get(i));
}
}
return smallList;
}
}