0

これは宿題、検索エンジンの一部です。文字列入力から重複した値を削除するクラスを作成しようとしています (入力はユーザーから取得され、テスト用にランダムな文字列を使用します)、トークン/単語を 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+" ");
        }
    }
}
4

3 に答える 3

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);
}
于 2016-12-12T19:33:59.700 に答える
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);
            }
        }
于 2016-12-11T21:29:05.010 に答える
0

私はあなたが必要なものを理解したので、これがあなたが望むものだと思います:/それがうまくいくことを願っています

import java.util.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);
    ArrayList<String> words = new ArrayList<String>();
    for(String s : lhs) {
        words.add(s);
    }
    for(int i=0;i<words.size();i++) {
        System.out.print(words.get(i) + " ");
    }
}
}
于 2016-12-11T21:43:34.563 に答える