我做了TreeSet與ArrayList插入/性能的基準測試。顯然,ArrayList表現更好,但是,擁有一百萬條獨特記錄,完整迭代時間爲279毫秒並不是那麼糟糕。
如果你的情況是微不足道的,我會堅持TreeSet。否則,在將元素插入到ArrayList之前,您將被迫重新輪詢並手動檢查重複項。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeSet;
public class TestTreeSetVsArrayList {
public static int ENTRIES = 10000000;
public static void main(String[] args) {
TreeSet<String> treeSet = new TreeSet<String>();
ArrayList<String> arrayList = new ArrayList<String>(10000);
long l = System.currentTimeMillis();
for (int i = 0; i < TestTreeSetVsArrayList.ENTRIES; i++) {
treeSet.add("String"+i);
}
System.out.println("treeset insertion time: "+ (System.currentTimeMillis()-l));
l = System.currentTimeMillis();
for (int i = 0; i < TestTreeSetVsArrayList.ENTRIES; i++) {
treeSet.add("String"+i);
}
System.out.println("arraylist insertion time: "+ (System.currentTimeMillis()-l));
Iterator<String> iter;
iter = treeSet.iterator();
l = System.currentTimeMillis();
while(iter.hasNext()) {
iter.next();
}
System.out.println("treeset iteration time: "+ (System.currentTimeMillis()-l));
iter = arrayList.iterator();
l = System.currentTimeMillis();
while(iter.hasNext()) {
iter.next();
}
System.out.println("arraylist iteration time: "+ (System.currentTimeMillis()-l));
}
}
在我的電腦的結果是:
TreeSet的插入時間:11350
ArrayList中插入時間:3583
TreeSet的迭代次數:279
的ArrayList迭代時間:0
您可以將它們始終放置在「Set」中,這將不允許重複,然後將它們移動到ArrayList中以供後續使用。 – forgivenson