Java 如何为重复的对象列表排序
如何在java中对重复的对象列表进行排序?基本上,排序后列表中的每个对象都应该是uniqe。也许有人知道一个很好的例子。要从列表中仅获取唯一元素的集合,只需将所有元素添加到列表中即可Java 如何为重复的对象列表排序,java,Java,如何在java中对重复的对象列表进行排序?基本上,排序后列表中的每个对象都应该是uniqe。也许有人知道一个很好的例子。要从列表中仅获取唯一元素的集合,只需将所有元素添加到列表中即可 listl=newarraylist(); Set s=新哈希集(l); 如果您只想删除重复项,请尝试以下操作: List<Object> l; //Your list of data for(int i = l.size()-1; i > 0; i--) for(int j = i; j
listl=newarraylist();
Set s=新哈希集(l);
如果您只想删除重复项,请尝试以下操作:
List<Object> l; //Your list of data
for(int i = l.size()-1; i > 0; i--)
for(int j = i; j > 0; j--)
if(l.get(i).equals(l.get(j))) //or == for primitives
l.remove(j);
列表l//您的数据列表
对于(int i=l.size()-1;i>0;i--)
对于(int j=i;j>0;j--)
if(l.get(i).equals(l.get(j))//或==对于原语
l、 移除(j);
如果要应用特定的排序,可以在
If
语句之后的相同for
循环中执行。这实际上是与HashSet相比的唯一优势。您可以将列表中的元素添加到集合中,然后使用这些元素创建一个新列表,如下所示:
List<Object> originalList = new ArrayList<Object>();
// the elements of originalList get added here
Set<Object> set = new HashSet<Object>(originalList);
List<Object> newList = new ArrayList<Object>(set);
List originalList=new ArrayList();
//这里添加了originalList的元素
Set Set=新哈希集(原始列表);
List newList=新阵列列表(集合);
请注意:
- 我使用
作为列表和集合的类型,将其替换为适合您需要的适当类型Object
- 要使上述操作正常工作,列表中的对象必须同时覆盖
和hashCode
equals
- 新列表中的元素顺序将与原始列表中的元素顺序不同
List List=new ArrayList();
增加(8);
增加(5);
增加(3);
增加(5);
增加(9);
设置s=新树集(列表);
迭代器itr=s.Iterator();
while(itr.hasNext()){
System.out.print(itr.next()+);
}
输出:
3 5 8 9如何使用构造函数:HashSet(CollectionThis不按编写的方式工作,因为当您从列表l中删除第j个元素时,所有较高的元素都会向下移动,索引也会混乱。当使用索引删除元素时,请始终向后工作,例如(
)for(int i=l.size()-1;i>=0;i--)
非常低效,你在集合的每个项目中循环一次集合,如果你有一个8个项目的集合,即8+7+6+5+4+3+2+1或36,就像你每次少做一个一样),但然后说你有24个项目。。。(298),每次向大小中添加一个,它都会增加最大值,但速度不是很快。您想“排序然后删除重复项”还是简单地“删除重复项”就足够了?如果没有,那么“删除重复项然后排序”呢?例如,是否有特别的理由首先排序(或根本不排序)--如果不创建自己的重复删除程序,将相同价值的项目的排序考虑在内?;-)请相应地更新标题/问题。他希望对其进行排序的原因是为了便于删除重复项。然而+1是唯一一个似乎阅读了整个作品的人。
List<Object> originalList = new ArrayList<Object>();
// the elements of originalList get added here
Set<Object> set = new HashSet<Object>(originalList);
List<Object> newList = new ArrayList<Object>(set);
List<Integer> list = new ArrayList<Integer>();
list.add(8);
list.add(5);
list.add(3);
list.add(5);
list.add(9);
Set<Integer> s = new TreeSet<Integer>(list);
Iterator<Integer> itr = s.iterator();
while(itr.hasNext()) {
System.out.print(itr.next() + " ");
}