ArrayList
对于Arraylist来说,有一个尖括号代表泛型。
泛型:依旧是装在集合当中的所有元素,全都是统一的什么类型。
注意泛型只能是引用类型,不能是基本类型。
扩展:如果希望集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。
基本类型包装类(引用类型,包装类都位于java.lang包下)
byte Byte
short Short
int Interger【特殊】
long Long
float Float
double Double
char Character【特殊】
boolean Boolean
注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容
如果内容是空,得到的是空的中括号:[]
import java.util.ArrayList;
public class demo02Arraylist {
public static void main(String[] args) {
//创建一个ArrayList集合,集合的名称是list,
//面装的全都是String字符串类型的数据,在后面的插入时候只能插入字符串类型
ArrayList<String> list = new ArrayList<>();
System.out.println(list);//[]
//向集合当中添加一些数据,需要用到add方法(尾插法)
list.add("111");
System.out.println(list);//[111]
list.add("222");
list.add("333");
list.add("444");
System.out.println(list);//[111, 222, 333, 444]
}
}
如果想要添加一些整数的基本类型,则需要改变泛型的类型:
import java.util.ArrayList;
public class demo02ArrayListBasic {
public static void main(String[] args) {
ArrayList<String> listA = new ArrayList<>();
//错误的写法!,泛型只能是引用类型,不能是基本类型
//ArrayList<int> listB = new ArrayList<>();
ArrayList<Integer> listB = new ArrayList<>();
listB.add(100);
listB.add(200);
listB.add(300);
System.out.println(listB);//[100, 200, 300]
//从JDK1.5+开始,支持自动装箱,自动拆箱
//自动装箱:基本类型 --> 包装类型
//自动拆箱:包装类型 --> 基本类型
//Integer num = listB.get(2);
int num = listB.get(2);
System.out.println("第二号元素是:"+num);//第二号元素是:300
}
}
下面介绍一些ArrayList集合常用方法和遍历:
ArrayList当中的常用方法有:
public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致
public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
public E remove(int index) :从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。
实例代码:
import java.util.ArrayList;
public class demo02ArraylistMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);//[]
//向集合中添加元素
boolean success = list.add("000");
System.out.println(list);//[000]
System.out.println("添加是否成功:"+success);//添加是否成功:true
list.add("111");
list.add("222");
list.add("333");
list.add("444");
System.out.println(list);//[000, 111, 222, 333, 444]
//得到集合中指定位置的集合元素,集合是从0开始的
String getString = list.get(2);
System.out.println("得到的元素为:"+getString);//得到的元素为:222
//获取集合中元素的个数
int size = list.size();
System.out.println("此时集合中元素个数为:"+size);//此时集合中元素个数为:5
//删除指定位置处的元素
String removeString = list.remove(3);
System.out.println("被移除的元素为:"+removeString);//被移除的元素为:333
//再次查看集合元素的个数,看是否少一
System.out.println("此时元素的个数为:"+list.size());//此时元素的个数为:4
}
}
ArrayList常用的遍历方法:
import java.util.ArrayList;
public class demo02ArrayListEach {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("1111");
list.add("2222");
list.add("3333");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
ArrayList练习1:生成6个1~33之间的随机整数添加到集合,并遍历集合。
import java.util.ArrayList;
import java.util.Random;
public class demo02ArrayListRandom {
public static void main(String[] args) {
//创建Random对象
Random r = new Random();
//创建ArrayList对象
ArrayList<Integer> list = new ArrayList<>();
//添加随机数到集合
for(int i = 1; i<= 6; i++){
list.add(r.nextInt(33)+1);//r.nextInt(33)+1为产生的随机数,范围在[1,33]
}
//遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
ArrayList练习2,自定义5个学生对象,添加到集合并遍历:
import java.util.ArrayList;
//学生类的定义
public class Student {
String name;
int age;
public Student() {
}
public Student(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;
}
}
//主类
public class demo02ArrayListStudent {
public static void main(String[] args) {
//创建ArrayList集合对象
ArrayList<Student> list = new ArrayList<>();
//创建学生对象
Student s1 = new Student("111",11);
Student s2 = new Student("222",22);
Student s3 = new Student("333",33);
Student s4 = new Student("444",44);
Student s5 = new Student("555",55);
//把学生对象作为元素添加到集合中
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
//遍历结合:for ,size,get
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getName() +"--------"+list.get(i).getAge());
}
}
}
ArrayList练习3(ArrayList集合作为参数),定义一指定格式打印集合的方法(ArrayList类型座位参数),使用{}扩起集合,使用@分割每个元素,格式参照{元素@元素@元素}:
import java.util.ArrayList;
public class demo02ArrayListPrint {
public static void main(String[] args) {
//创建一个ArrayLis对象
ArrayList<String> list = new ArrayList<>();
//添加元素到集合中
list.add("洪七公");
list.add("张无忌");
list.add("杨过");
System.out.println(list);//[洪七公, 张无忌, 杨过]
//调用方法
PrintList(list);//{洪七公@张无忌@杨过}
}
public static void PrintList(ArrayList<String> list){//注意这里的泛型也要写上
//拼接左括号
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)+"@");
}
}
}
}
ArrayList练习4(ArrayList集合作为返回值),用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中,要求使用自定义的方法来实现筛选:
import java.util.ArrayList;
import java.util.Random;
public class demo02ArrayListReturn {
public static void main(String[] args) {
//创建ArrayList对象
ArrayList<Integer> list = new ArrayList<>();
//创建Random对象
Random r = new Random();
//向集合中添加20个元素
for(int i = 0; i < 20; i++){
list.add(r.nextInt(20)+1);
}
//未调用筛选方法之前
System.out.println(list);
//打印并且调用筛选方法
System.out.println(arrayListReturn(list));
}
/**
* 三要素:返回值类型,方法名称,参数列表
* @param list
* @return
*/
public static ArrayList<Integer> arrayListReturn(ArrayList<Integer> list){
//循环查找
for (int i = 0; i < list.size(); i++) {
if(list.get(i) % 2 == 0){//是偶数则继续
continue;
}else {
list.remove(i);//不是偶数则移除集合
i--;//同时需要把变量i的值-进行1操作
}
}
return list;
}
}