0

文字列のリストの一意の ID (整数として) を取得するにはどうすればよいですか?

たとえば、リストは次のよう["Cat","Dog","Cow","Cat","Rat"] になります。

1 -> Cat
2 -> Dog
3 -> Cow
4 -> Rat

これと新しい構造を保存する必要があります。

編集: 重要なのは、それCatが新しい構造で 1 回だけであることです。

4

4 に答える 4

4

を使用できますHashMap<Integer, String>。キーは current のインデックスになりList、値は実際の になりStringます。

例:

List<String> myList = new ArrayList<String>();
// no identical Strings here
Set<String> mySet = new LinkedHashSet<String>();
myList.add("Cat"); // index 0
myList.add("Dog"); // index 1
myList.add("Cow"); // etc
myList.add("Cat");
myList.add("Rat");
mySet.add("Cat"); // index 0
mySet.add("Dog"); // index 1
mySet.add("Cow"); // etc
mySet.add("Cat"); // index 0 - already there
mySet.add("Rat");
Map<Integer, String> myMap = new HashMap<Integer, String>();
for (int i = 0; i < myList.size(); i++) {
    myMap.put(i, myList.get(i));
}
System.out.println(myMap);
Map<Integer, String> myOtherMap = new HashMap<Integer, String>();
int i = 0;
for (String animal: mySet) {
    myOtherMap.put(i++, animal);
}
System.out.println(myOtherMap);

出力:

{0=Cat, 1=Dog, 2=Cow, 3=Cat, 4=Rat}
{0=Cat, 1=Dog, 2=Cow, 3=Rat}
于 2013-06-11T14:41:04.150 に答える
1
  1. 値を含むセットを構築します。
  2. 設定値を含む配列を作成します (Set.toArray() を参照)。
  3. 配列内のアイテムのインデックスは、アイテムの整数識別子です。
于 2013-06-11T14:47:28.590 に答える
1

プロセス内でのみ一意である場合は、新しい値が必要になるたびにAtomicIntegerandを使用できます。incrementAndGet()

それ以外の場合は、これを試すことができます

int uniqueId = 0;

int getUniqueId()
{
    return uniqueId++;
}

スレッドセーフにしたい場合は、synchronized を追加します。

于 2013-06-11T14:42:46.377 に答える
1
private enum Animals {
   Cat,
   Dog,
   Cow,
   Sheep,
   Horse 
}

Animals.Cat.ordinal()-- あなたに番号を与えます。 Animals.valueOf("Cat");-- 文字列を一致させます。

于 2013-06-11T14:43:18.393 に答える