Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排序和删除重复项后,在ArrayList中维护顺序_Java_Eclipse_Arraylist - Fatal编程技术网

Java 排序和删除重复项后,在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添加字符串,然后对其排序以删除重复项。但顺序应该与我添加这些字符串的方式相同。 我想要的:[随机文本,测试文本,其他文本] 我得到的:[其他文本,随机文本,测试文本]

这是可能的还是有更简单的方法

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