)とラベル付けしました。私は簡単な問題があります。私は100000の名前でArrayList(型Stringの)を持っています。私は別のArrayList(Integer型の)を作成して100,000個のElementsを持ち、String ArrayListの各要素にID番号を割り当てたいと思います。等しい名前には同じID番号を割り当てる必要があります。
非常に基本的な例:
私が持っている:(ハンス、最大、ハンス、ハンス・フランク)
私がしたい:(1、2、1、1、3)Arraylistの固有値をラベル<String>(識別子が
私は機能するソリューションを実装しているが、非常に遅い(私の100,000名の大きなデータセットのために)。私は誰かがこれを行うより良い/より速い方法を見つけることができるのだろうか。みんなに感謝します。
public static void main(String[] args) {
// initialize arraylists
ArrayList<String> Names = new ArrayList<String>();
ArrayList<Integer> Id = new ArrayList<Integer>();
// sample data // I want the integer Arraylist to have values:
Names.add("Hans"); // 1
Names.add("Max"); // 2
Names.add("Hans"); // 1
Names.add("Hans"); // 1
Names.add("Frank"); // 3
// my solution (works, but is slow and confusing)
int N = Names.size();
int ID_Count = 0;
for (int i=0; i<N; i++) {
boolean match_found = false;
String curr_Name = Names.get(i);
for (int check=0; check<i; check++) {
if (curr_Name.equals(Names.get(check))) {
Id.add(Id.get(check));
match_found = true;
break;
}
}
if (match_found==false) {
ID_Count++;
Id.add(ID_Count);
}
}
// show result
for (int i=0; i<N; i++) {
System.out.println(Id.get(i) + " " + Names.get(i));
}
}
私はそれが動作するにもかかわらず、あなたのアプローチを示唆してwouldntは。 HashMapsを試してみましたが、同じ値を持つ必要がある同じキーと同じように動作します –
[indexOf()](https://docs.oracle.com/javase/) 8/docs/api/java/util/List.html#indexOf-java.lang.Object-)メソッド?これはあなたのIDリストに追加するときにあなたを助けるかもしれない – Ash
しかし、助けてくれてありがとう。 HashMapsを使ったことはありません。サンプルコードのためにHashMapsで回答を投稿できるのであれば、とても感謝しています! – thomas