0

入力ファイルを読み取り、文を単語に変換してから、一意の整数 ID を提供したいと考えています。

入力文字列を単語に変換できましたが、単語ごとに一意の ID を割り当てる方法がわかりにくく、重複を削除する必要があります。(入力の場合 - キャンディに行きたい。両方の「to」の場合は同じ ID を取得する必要があります)

これは私のコードです:

Scanner sc = new Scanner(System.in);

System.out.println("enter the word");

String s= sc.nextLine();
String st[] =s.split(" ");
   for(int i=0;i<st.length-1 ;i++)
   {
        System.out.println(st[i]);
   }
4

2 に答える 2

1

この目的で UUID と HashMap を使用できます。

Map<String, String> map = new HashMap<String, String>(); // storage for all word-id pairs

/* here insert your resulting array from scanner and split as collectionOfWords */
for (String yourNextWord : collectionOfWords) {

String id = UUID.randomUUID();      // this one generates a unique string id
map.put(yourNextWord, id);

}

その過程で、hashmap は重複をキーとして置き換えるため、1 つの単語の多数のコピーに対して常に 1 つの同じエントリが存在します。したがって、それらの ID は同じになります。

于 2013-11-03T10:23:42.483 に答える
1

試す

 public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashMap<Integer, String> store = new HashMap<Integer,String>();

        System.out.println("enter the word");

        String s= sc.nextLine();
        String st[] =s.split(" ");
        Integer uniqueId=1;

        for(int i=0;i<st.length;i++)
        {
            if(!store.values().contains(st[i])){
                store.put(uniqueId, st[i] );
                uniqueId = uniqueId+1;
            }                               
         }

         for (Integer id: store.keySet()){
             String key =id.toString();
             String value = store.get(id).toString();  
             System.out.println(key + " " + value);  

            }
         sc.close();
        }   

    }
于 2013-11-03T10:28:53.433 に答える