78、集合中存放的依然是对象的引用而不是对象的本身。
79、ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型数组。
80、如果增加的元素个数超过了10个,那么ArrayList底层会新生成一个数组,长度为原数组的1.5倍 +1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。
81、对于ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,价格比较高。
82、集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中。
83、集合当中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型)。
84、线性表的逻辑结构是忙n个数据元素的有限序列:(a1, a2, a3,…n).n为线性表的长度(n>=0), n=0的表是空表。
数据元素呈线性关系。必存在唯一的称为“第一个”的数据元素;必存在唯一的称为“最后一个”的数据元素;除第一个元素外,每个元素都有且只有一个前驱元素;除最后一个元素外,每个元素都有且只有一个后继元素。
所有数据元素在同一个线性表中必须是相同的数据类型。
线性表按其存储结构可分为顺序表和链表。用顺序存储结构存储的线性表称为顺序表;
用链式存储结构存储的线性表称为链表。
将线性表中的数据元素依次存放在某个存储区域中,所形成的表称为顺序表。一维数组就是用顺序方式存储的线性表。
85、单向链表:
public class Node {
String data;
Node next;
Node(String data){
this.data = data;
}
}
public class TestNode {
public static void main(String[] args) {
Node node1 = new Node("node1");
Node node2 = new Node("node2");
Node node3 = new Node("node3");
node1.next = node2;
node2.next = node3;
System.out.println(node1.next.next.data);
System.out.println("--------------------------");
Node node4 = new Node("node4");
node1.next = node4;
node4.next = node2;
System.out.println(node1.next.next.next.data);
System.out.println("--------------------------");
node1.next = node2;
node4.next =null;
System.out.println(node1.next.next.data);
}
}
86、双向循环链表:
public class Node2 {
Node2 previous;
String data;
Node2 next;
Node2(String data){
this.data = data;
}
}
public class TestNode2 {
public static void main(String[] args) {
Node2 node1 = new Node2("node1");
Node2 node2 = new Node2("node2");
Node2 node3 = new Node2("node3");
node1.next = node2;
node2.previous = node1;
node2.next = node3;
node3.previous = node2;
node1.previous = node3;
System.out.println("-------------------");
Node2 node4 = new Node2("node4");
node1.next = node4;
node4.previous = node1;
node4.next = node2;
node2.previous = node4;
System.out.println("-------------------");
node1.next = node2;
node2.previous = node1;
node4.next =null;
node4.previous =null;
}
}
87、关于ArrayList与LinkedList的比较分析:
A)ArrayList底层采用数组实现,LinkedList底层采用双向链表实现。
B)当执行插入或者删除操作时,采用LinkedList比较好。
C)当执行搜索操作时,采用ArrayList比较好。
===============================以上文字出自张龙老师的视频================================