ArrayList底层是一个数组,每次放元素的时候放在了数组的最后。
public boolean add(E e) {
public void add(int index, E element) {
这个方法是放在index位置
问题:ArrayList底层是数组 那么他是多大??
1、new ArrayList<>() 调用的是 不带有参数的构造方法, 那么大小默认为0。
2、当调用了默认的构造方法之后,当你添加第一个元素的时候 会进行扩容,第一次扩容的时候,大小为10;
3、当后续进行扩容的时候 ,是进行了1.5倍的方式进行扩容
List常用的方法
迭代器 用来打印集合中的元素的
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//System.out.println(list);//1 2 3 4 5
//迭代器 用来打印集合中的元素的
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
练习1
某补习班有若干名学生,(学生对象放在List中),每个学生有姓名,班级和考试成绩等属性,某次考试结束后,都获得一个考试成绩,遍历List集合,打印每个学生的属性
class Student {
public String name;
public int age;
public double score;
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("bit",19,89.9));
list.add(new Student("bit2",219,189.9));
//打印链表方式1,for循环
/*for (int i = 0;i < list.size();i++) {
System.out.println(list.get(i));
}*/
//打印链表方式2,foreach
/*for(Student student : list) {
System.out.println(student);
}*/
//打印链表方式3,迭代器Iterator
/*Iterator<Student> it =list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}*/
//打印链表方式4,直接打印
System.out.println(list);
}
练习2
有一个链表当中存放的是整形数据,使用Collections.sort对链表进行排序
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(9);
Collections.sort(list);
System.out.println(list);
}