您好我想将字符串添加到ArrayList,然后对其进行排序以删除重复项。该顺序应该与我添加这些字符串的方式相同。 我想要的:[randomtext,testtext,anothertext] 我得到的:[anothertext,randomtext,testtext]
这是可能的还是有更简单的方法?
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);
答案 0 :(得分:2)
最好的方法是确保在向列表添加内容时不添加重复项。
if(!myList.contains(item)){
myList.add(item);
}
如果您从方法/类的范围之外收到List
,那么最简单的可能是将内容添加到LinkedHashSet
以消除重复项,然后将其取回。 LinkedHashSet
维持秩序。
LinkedHashSet<String> set = new LinkedHashSet<>();
set.addAll(myList); // assuming myList is List<String>
myList.clear();
myList.addAll(set);
编辑:我的回答是基于你的陈述(我强调的是强调)
您好我想将字符串添加到ArrayList,然后对其进行排序以删除重复项。 顺序应该保持与添加字符串相同的方式。< / p>
因此,您只需要排序以删除重复项。我的回答避免了排序,并将负担放在LinkedHashSet
上。
答案 1 :(得分:-1)
试试这个(将List
转换为LinkedHashSet
)
Set<String> a = new LinkedHashSet<String>(abc);
System.out.println(a);