我的問題的基礎是在Java中給出了List對象,返回唯一數據集合的最快方法是什麼?收集Java列表中唯一數據的最快方法
更具體的版本是,我有一個2d ArrayList(想象它像一個表),我想循環給定的列索引並返回唯一的數據。
這裏是我的當前設置:
public Set<Object> getDistinctColumnData(int colIndex) {
//dataByIndex = List<List<Object>>
Set<Object> colDistinctData = new HashSet<Object>(dataByIndex.size() + 1, 1f) ;
for(List<Object> row : dataByIndex) {
colDistinctData.add(row.get(colIndex)) ;
}
return colDistinctData ;
}
我有一個小的性能增益,當我最初的容量設置爲加一個非組不同的大小和負載因子1(我的想法是它贏得直到它達到100%才需要增長,即使原始設置已經100%截然不同(或者我錯了嗎?))。
有沒有更快的方法?
downvoter會照顧一個理由嗎? – CrazyPenguin 2012-02-21 19:59:45
我會使用'(dataByIndex.size()* 3/2)'作爲初始大小,並保留負載因子,除非您預計會有大量重複項。 – 2012-02-21 20:02:46
你的代碼看起來不錯。處理別的事情。 – Bohemian 2012-02-21 20:09:17