数组的长度不能改变,但ArrayList的长度可以随意改变。
泛型 装在集合当中的所有元素,全都是统一的什么类型。
注意:泛型只能是引用类型。
public class Demo08ArrayList {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();//Cream
//只能放String
//从jdk1.7+开始,右侧的尖括号内部可以不写内容,但尖括号得写
System.out.println(list);//[]
//对于ArrayList直接打印的是内容为不是地址值
//向集合添加数据add();
list.add("Micheal");
System.out.println(list);
list.add("Jane");
System.out.println(list);//[Micheal, Jane]
}
}
想在ArrayList中存储基本类型怎么办?
使用基本类型的包装类!
基本类型 包装类(引用类型,包装位于Java.lang包下)
byte Byte
int Integer !!
short Short
long Long
float Float
double Double
char Character !!
boolean Boolean
从JDK1.5+ 开始自动装箱,自动拆箱.
基本类型<–>包装类型
public class DemoArrayListBaisc {
public static void main(String[] args) {
ArrayList<String> listA = new ArrayList<>();
//ArrayList<int> listB=new ArrayList<int>();Error;
ArrayList<Integer> listB = new ArrayList<>();
listB.add(100);
listB.add(200);
System.out.println(listB);
int a = listB.get(0);
System.out.println(a);
}
}
常用方法
public boolean add (E e);添加元素,参数类型需要与泛型一致,返回添加是否成功true和false。
public E get (int index);读取元素,索引值从0开始
public e remove(int index);删除元素,返回被删除的元素
public int size();获取集合长度
import java.util.ArrayList;
public class DemoArrayLIstMethod {
public static void main(String[] args) {
ArrayList<String > list = new ArrayList<>();
System.out.println(list);
boolean success=list.add("Micheal");
System.out.println(success);
list.add("Jane");
list.add("Aline");
String str = list.get(2);
System.out.println(str);
String rm = list.remove(0);
System.out.println(rm);
System.out.println(list);
int size = list.size();
System.out.println(size);
}
}
练习一
定义四个Person类并添加到集合,遍历集合。
import java.util.ArrayList;
public class Test02 {
public static void main(String[] args) {
Person st1=new Person("Mi",20);
Person st2 =new Person("Ni",30);
Person st3 =new Person("Li",40);
Person st4 =new Person("Pi",50);
ArrayList<Person> list =new ArrayList<>();
list.add(st1);
list.add(st2);
list.add(st3);
list.add(st4);
for (int i = 0; i <list.size() ; i++) {
Person p=list.get(i);
System.out.println("Name:"+p.getName()+"Age"+p.getAge());
}
System.out.println(list);
}
}
练习二
定义一个方法,以指定的格式输出集合,例如{Miss@Climb@Across@Mr@There@Doing@Doing}
import java.util.ArrayList;
public class Test03 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Miss");
list.add("Climb");
list.add("Across");
list.add("Mr");
list.add("There");
list.add("Doing");
pribtArrayList(list);
}
public static void pribtArrayList(ArrayList 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(list.get(i) + "}");
}
}
}
}
练习三
筛选集合中的元素(20个随机int数字),将偶数放在小集合中,使用自定义的方法。
import java.util.ArrayList;
import java.util.Random;
public class Test04 {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
Random rm = new Random();
for (int i = 0; i < 20; i++) {
list1.add(rm.nextInt(100) + 1);
}
System.out.println("原集合为" + list1);
list2 = change(list1);
System.out.println("筛选后剩余的集合为" + list1);
System.out.println("偶数集合为" + list2);
}
//尖括号必须写Integer,否则不能对list.get(i)进行运算
public static ArrayList change(ArrayList<Integer> list) {
ArrayList<Integer> listChange = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i) % 2 == 0) {
listChange.add(list.get(i));
}
}
return listChange;
}
}