gpt4 book ai didi

java - 排序和删除重复项后保持 ArrayList 中的顺序

转载 作者:行者123 更新时间:2023-11-30 11:03:18 25 4
gpt4 key购买 nike

您好,我想将字符串添加到 ArrayList,然后对其进行排序以删除重复项。尽管顺序应该与我添加这些字符串的方式相同。我想要什么:[随机文本、测试文本、另一个文本]我得到的是:[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);

最佳答案

最好的方法是确保在向列表中添加内容时不会添加重复项。

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);

编辑:我的回答是基于你的陈述(我用粗体表示强调)

Hello I'd like to add Strings to an ArrayList and then sort it to remove duplicates. The order should remain the same way I added those Strings though.

因此,您只是进行排序以删除重复项。我的回答避免了排序并将负担放在 LinkedHashSet 上。

关于java - 排序和删除重复项后保持 ArrayList 中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com