我的问题的基础是在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