Java 排序和删除重复项后,在ArrayList中维护顺序
您好,我想向ArrayList添加字符串,然后对其排序以删除重复项。但顺序应该与我添加这些字符串的方式相同。 我想要的:[随机文本,测试文本,其他文本] 我得到的:[其他文本,随机文本,测试文本] 这是可能的还是有更简单的方法Java 排序和删除重复项后,在ArrayList中维护顺序,java,eclipse,arraylist,Java,Eclipse,Arraylist,您好,我想向ArrayList添加字符串,然后对其排序以删除重复项。但顺序应该与我添加这些字符串的方式相同。 我想要的:[随机文本,测试文本,其他文本] 我得到的:[其他文本,随机文本,测试文本] 这是可能的还是有更简单的方法 ArrayList<String> abc = new ArrayList(); abc.add("randomtext"); abc.add("testtext"); abc.add("anothertext");
ArrayList<String> abc = new ArrayList();
abc.add("randomtext");
abc.add("testtext");
abc.add("anothertext");
abc.add("randomtext");
abc.add("testtext");
abc.add("anothertext");
abc.add("randomtext");
abc.add("testtext");
abc.add("anothertext");
Collections.sort(abc);
for (int i = 1; i < abc.size() ; i++)
{
if(abc.get(i) == abc.get(i-1))
{
abc.remove(i);
i -= 1;
}
}
System.out.print(abc);
ArrayList abc=new ArrayList();
abc.添加(“随机文本”);
添加(“测试文本”);
abc.添加(“其他文本”);
abc.添加(“随机文本”);
添加(“测试文本”);
abc.添加(“其他文本”);
abc.添加(“随机文本”);
添加(“测试文本”);
abc.添加(“其他文本”);
收集.分类(abc);
对于(int i=1;i
最好的方法是确保在列表中添加内容时不会添加重复项
if(!myList.contains(item)){
myList.add(item);
}
如果您从方法/类范围之外接收到列表
,那么最简单的方法可能是将内容添加到LinkedHashSet
以消除重复项,然后将其取出LinkedHashSet
维护订单
LinkedHashSet<String> set = new LinkedHashSet<>();
set.addAll(myList); // assuming myList is List<String>
myList.clear();
myList.addAll(set);
LinkedHashSet=newLinkedHashSet();
set.addAll(myList);//假设myList是List
myList.clear();
myList.addAll(集合);
编辑:我的答案基于你的陈述(我用粗体强调)
您好,我想向ArrayList中添加字符串,然后对其进行排序以删除重复项。但顺序应与添加这些字符串的方式相同
因此,您只需进行排序以删除重复项。我的回答避免了排序,并给LinkedHashSet
带来了负担。试试这个(将列表
转换为LinkedHashSet
)
Set a=newlinkedhashset(abc);
系统输出打印项次(a);
那么你实际上是在问如何对未就位的数组列表进行排序?@mri:不客气。如果你觉得这是你想要的答案,别忘了点击复选标记接受它。为什么这个答案是-1?
Set<String> a = new LinkedHashSet<String>(abc);
System.out.println(a);