补充
其他知识点
1.遍历
ArrayList主要有三种遍历方式,for循环、for each、iterator
简例上代码,习惯性的以Person为例,也不知道哪来的习惯
// 先建个Person类
class Person {
String name;
int age;
public Person() {
}
public Person(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 Demo2 {
public static void main(String[] args) {
List<Person> person = new ArrayList<>();
// 添加几个人物
person.add(new Person("磊哥", 16));
person.add(new Person("凯哥", 22));
person.add(new Person("喜哥", 21));
person.add(new Person("浩哥", 19));
person.add(new Person("旭哥", 23));
person.add(new Person("婷姐", 18));
}
}
- for循环遍历代码
// for循环遍历,简单演示
for (int i = 0; i < person.size(); i++) {
System.out.println(person.get(i).getName() + '\t' + person.get(i).getAge());
}
- for each遍历代码
// for each遍历
for (Person p : person) {
System.out.println(p.name + '\t' + p.age);
}
- iterator遍历代码
// iterator遍历
Iterator<Person> it = person.iterator();
while (it.hasNext()) {
Person p = (Person) it.next();
System.out.println(p.name + '\t' + p.age);
}
2.ArrayList和LinkedList的区别
两者都实现 List 接口,区别以下(别人总结的,嗯,比我总结的好太多,就没好意思放我的)
-
数据结构不同
ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)的数据结构。 -
效率不同
当随机访问List(get和set操作)时,ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。
当对数据进行增加和删除的操作(add和remove操作)时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。 -
自由性不同
ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。 -
主要控件开销不同
ArrayList主要控件开销在于需要在lList列表预留一定空间;而LinkList主要控件开销在于需要存储结点信息以及结点指针信息。
(ArrayList 就先这些,有什么不对或者不好的请费心指正。后面会再梳理 LinkedList 的知识点)