簡體   English   中英

如何獲取字符串列表的唯一ID?

[英]How to get a Unique ID for a list of strings?

如何獲得字符串列表的唯一ID(作為整數)?

例如,列表看起來像["Cat","Dog","Cow","Cat","Rat"] ,結果應為:

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

我需要保存此結構和新結構。

編輯:重要的是, Cat在新結構中只有一次。

您可以使用HashMap<Integer, String> 鍵將是當前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}

如果它僅在流程中唯一,則可以在每次需要新值時使用AtomicInteger並調用AtomicInteger incrementAndGet()

否則你可以試試這個

int uniqueId = 0;

int getUniqueId()
{
    return uniqueId++;
}

如果希望線程安全,請添加同步。

private enum Animals {
   Cat,
   Dog,
   Cow,
   Sheep,
   Horse 
}

Animals.Cat.ordinal() -給您數字。 Animals.valueOf("Cat"); -匹配字符串。

  1. 建立一個包含值的集合。
  2. 構建一個包含設置值的數組(請參見Set.toArray())。
  3. 數組中該項目的索引是該項目的整數標識符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM