如何在使用List和LinkedHashSet从Java中的字符串中删除重复值后获取Arraylist <string>

时间:2016-12-11 21:15:14

标签: java string list arraylist linkedhashset

这是家庭作业的一部分,一个搜索引擎。我正在尝试创建一个从字符串输入中删除重复值的类(输入将从用户获取,现在使用随机字符串进行测试)并将标记/单词存储到ArrayList中以将它们与停止字的String []进行比较(要删除的词)。我正在使用List和LinkedHashSet,因为我想保留单词的顺序并删除重复项。它确实删除了重复的单词并保留了顺序,但是我无法将它存储到ArrayList,任何想法?

import java.util.Arrays;
import java.util.List;
import java.util.LinkedHashSet;
import java.util.Set;

public class RemoveDuplicateWord {

    public static void main(String[] args) {
        String str = "the search engine that could search";
        removeDupWord(str);
    }

    public static void removeDupWord(String str) {
        List<String> list = Arrays.asList(str.split(" "));
        Set<String> lhs = new LinkedHashSet<String>(list);

        for(String s : lhs) {
            System.out.print(s+" ");
        }
    }
}

3 个答案:

答案 0 :(得分:1)

public static void removeDupWords(String str) {
      List<String> list = Arrays.asList(str.split(" "));
      Set<String> check = new HashSet<String>();
      String output = "";
      for(int i =0; i< list.size(); i++) {
          if(!check.contains(list.get(i)))
              output = output.concat(list.get(i) + " ");
          check.add(list.get(i));
      }
     System.out.println(output);
}

答案 1 :(得分:0)

只需声明另一个arrayList,并在迭代Set时添加每个字符串。

  public static void removeDupWord(String str) {
            List<String> list = Arrays.asList(str.split(" "));
            Set<String> lhs = new LinkedHashSet<String>(list);
           List<String> result= new ArrayList<String>();
            for(String s : lhs) {
                System.out.print(s+" ");
                result.add(s);
            }
        }

答案 2 :(得分:0)

我认为这就是你想要的,因为我理解你需要的东西:/希望它有效

null