ArrayList
集合基础
- 有个场景,一个人考了100分,要存储这个人的分数用变量就可以了。但是考试不可能是一个人考试,他有很多个人考试就有很多个分数。我要存储这些分数怎么办呢?这就想到了数组。但是考虑到假如考试当天有人生病了,现在这个数组应该变化,而数组的长度是固定的不能发生改变的,这个时候数组就满足不了需求了。
- 集合特点是提供了一种可变的存储模型,存储的容量可以发生改变。目前学习的是ArrayList。
- 此列表元素中的烈性,ArrayList是可调整大小数组的实现,他底层其实是个数组。
- ArrayList可调整大小的数组实现,< E > 他后面跟的是一种特殊的数据类型,叫泛型。类型是集合中存储的数据类型。
- 在出现 < E >的地方中我们使用引用数据类型替换即可
ArrayList<String>,ArrayList<Student>
ArrayList构造方法和添加方法
方法名 | 说明 |
---|---|
public ArrayList() | 创建一个空的集合对象 |
public ArrayList() | 创建一个空的集合对象 |
public boolean add(E e) | 将制定的元素追加到此集合的末尾 |
public void add(int index,E element) | 在此集合中的制定位置插入指定的元素 |
- ArrayList< String > 表示在里面存储的是String类型的元素
ArrayList<String> array = new ArrayList<>(); //jdk7新特性,右边<>可以根据左边<String>推断类型
- 这样写法也可以
- 现在假如输出的话,是没有元素的
- 下面用add方法来添加元素
ArrayList<String> array = new ArrayList<>();
System.out.println(array.add("hello"));
System.out.println("array:"+array);
- true表示添加成功,而ArrayList添加元素是肯定成功的,所以没必要输出返回值。
- 添加三个元素
- 下面在集合中指定位置插入指定的元素
- 假如下标越界,就报IndexOutOfBoundsException的error
ArrayList集合常用方法
方法名 | 说明 |
---|---|
public boolean remove(Object o) | 删除指定的元素,返回删除是否成功 |
public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
public E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
public E get(int index) | 返回指定索引处的元素 |
public int size() | 返回集合中的元素的个数 |
- remove方法的使用
- 根据索引来删除
- 修改指定索引处的元素,返回被修改的元素
- 直接get查看
- 返回集合中数组的个数
存储字符串并遍历
- 创建一个存储字符串的集合,存储3个字符串元素,使用实现控制台遍历该集合。
- 思路:创建集合对象,往集合汇总添加字符串对象。遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现。
- 遍历集合的通用格式
for ( int i=0 ; i < array.size(); i++){
array.get(i);
}
import java.util.ArrayList;
public class ArrayListDemo02 {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
//往集合中添加字符串对象
array.add("丁");
array.add("林");
array.add("黄");
// 遍历集合,获取集合中每一个元素
for ( int i = 0 ; i < array.size(); i++){
System.out.println("array:"+array.get(i));
}
}
}
存储学生对象并遍历
- 需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合。
- 定义学生类
- 创建集合对象
- 创建学生对象
- 添加学生对象到集合中
- 遍历集合,才用通用遍历格式实现
- 学生类
public class Student {
private String name;
private int age;
public Student(){};
public Student(String name,int age){
this.name = name;
this.age = age;
};
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
- 主程序
import java.util.ArrayList;
public class Application {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//创建学生对象
Student s1 = new Student("林青霞",30);
Student s2 = new Student("风清扬",33);
Student s3 = new Student("张曼玉",18);
//添加学生对象到集合中
array.add(s1);
array.add(s2);
array.add(s3);
for (int i = 0; i < array.size();i++){
Student s = array.get(i);
System.out.println(s.getName()+","+s.getAge());
}
}
}