兩個獨立測試方法展示 Collection.retainAll() 保留交集與 ListIterator 雙向遍歷、動態插入功能。
package com.diegoyun.apiLearning;
import java.util.*;
public final class UtilTutorial {
public static void collectionRetainTest() {
System.out.println("**********collectionRetainTest begin:");
Collection c1 = new ArrayList();
Collection c2 = new ArrayList();
c1.add("aaa"); c1.add("bbb"); c1.add("ccc");
c2.add("ddd"); c2.add("ccc"); c2.add("eee");
boolean isRetainSucceed = c2.retainAll(c1); // c2 保留與 c1 交集
System.out.println("isRetainSucceed = " + isRetainSucceed); // true
for (Iterator iter = c2.iterator(); iter.hasNext();)
System.out.println("element = " + iter.next()); // 僅輸出 ccc
System.out.println("**********collectionRetainTest end:");
}
public static void listIteratorTest() {
System.out.println("**********listIteratorTest begin:");
List list = new ArrayList();
list.add("aaa"); list.add("bbb"); list.add("ccc");
ListIterator iter = list.listIterator();
// 正向
while (iter.hasNext())
System.out.println("element = " + iter.next());
// 反向
while (iter.hasPrevious())
System.out.println("element = " + iter.previous());
// 動態插入:索引 2 處插入 ddd
while (iter.hasNext()) {
int i = iter.nextIndex();
if (i == 2) iter.add("ddd");
System.out.println("element = " + iter.next());
}
// 插入後反向遍歷
while (iter.hasPrevious())
System.out.println("element = " + iter.previous());
System.out.println("**********listIteratorTest end:");
}
public static void main(String[] args) {
// UtilTutorial.collectionRetainTest();
UtilTutorial.listIteratorTest();
}
}
retainAll 修改呼叫端集合(c2),保留與參數集合(c1)的交集。ListIterator 支援雙向游標、add() 插入於游標前位置(即 nextIndex() 位置)。