线性表
顺序表 ArrayList & LinkedList
操作合集
01. 创建表 createList
// 默认使用 Java 的 ArrayList 作为 顺序表, 所以不需要创建, 直接使用 ArrayList<String> mySequenceList = new ArrayList<String>();
LinkedList<String> myLinkedList = new LinkedList<String>();
02. 初始化 initList (默认提供初始化, 不需要特殊初始化)
但是, 因为 Java 的 ArrayList 是支持动态增长的, 所以, 并不是一下子分配了所有的内存空间, 而是一点点增长的.
比如, ArrayList<String> mySequenceList = new ArrayList<String>(10); // 这样也没有用, 并不是一下子分配了10个存储单元的.
03. 返回长度 listLength
mySequenceList.size()
myLinkedList.size()
04. 判断空表 ListEmpty
mySequenceList.isEmpty()
myLinkedList.isEmpty()
05. 插入元素 listInsert
// 插入队尾 mySequenceList.add("asdf"); // 插入指定 index 位置, 但是 index 要 < size() // 相当于前位插入 mySequenceList.add(0, "bi");
myLinkedList.add("a");
myLInkedList.add(0,"b1");
06. 删除元素 listDelete
// remove 按照 index 顺序 mySequenceList.remove(0); // remove 按照 value 值 mySequenceList.remove("asdf");
myLinkedList.remove(0);
myLinkedList.remove("asdf");
07. 返回元素前驱 / 后继元素 priorElem, nextElem
// sequence return int seq = mySequenceList.indexOf("asdf"); if (seq >= 0) { int prior = seq - 1; int next = seq + 1; if (prior >= 0) { System.out.println("prior: " + mySequenceList.get(prior)); } if (next <= mySequenceList.size()) { System.out.println("next: " + mySequenceList.get(next)); } }
// for linked list:
08. 返回元素后继元素 nextElem
reference 07
09. 获得元素位置 LocateElem
int seq = mySequenceList.indexOf("asdf");
10. 返回某个位置元素 retrieve
mySequenceList.get(0);
11. 清空顺序表 ClearList
mySequenceList.clear();
链表 LinkedList
循环链表
双向链表
LinkedList 是一个双向链表.
Comments
直接使用提供的方式, 还是有不方便的地方,例如: 无法直接获得前驱和后继, 可能还需要自己编码.
这个方法本身不是 ArrayList 和 LinkedList 的标准方法.
数据结构, 还是额外自己定义的更加灵活, 直接使用系统提供的, 还是有很多的函数本身没有的.