A HashTable поддерживает уникальность ключей, т.е. когда вы попытаетесь добавить элемент с существующим ключом, старое значение будет заменено новым. Вы можете понять это на собственном примере, приведенном ниже:
import java.util.Hashtable;
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
int d = 2;
Hashtable<Integer, String> my_dict = new Hashtable <Integer, String>();
my_dict.put(a, "Apple");
my_dict.put(b, "Banana");
my_dict.put(c, "Orange");
my_dict.put(d, "Grapes");
System.out.println(my_dict);
}
}
Вывод:
{3=Orange, 2=Grapes, 1=Apple}
Как видите, Grape
заменил Banana
потому что он имеет тот же ключ, что и ключ Banana
.
Если у вас есть требование, чтобы оба ключа Grape
и Banana
имели один и тот же идентификатор / ключ, вы можете реализовать свой собственный тип примерно так:
class Item {
private int id;
private String name;
//Constructors, getters and setters
}
Затем добавьте экземпляры Item
в List
, например,
List <Item> list = new ArrayList<Item>();
list.add(new Item(1, "Apple"));
list.add(new Item(2, "Banana"));
list.add(new Item(3, "Orange"));
list.add(new Item(2, "Grape"));
. Вы можете создать несколько служебных методов (пример приведен ниже) для получения необходимый элемент из List
.
public Item getItemByName(List<Item> list, String itemName) {
Item item = null;
for(Item e: list){
if(e.getName().equalsIgnoreCase(itemName)){
item = e;
break;
}
}
return item;
}
Не стесняйтесь комментировать в случае каких-либо сомнений / проблем.