如何在java中存储和比较唯一对?哪种数据结构有用?

如何在java中存储和比较唯一对?哪种数据结构有用?,java,collections,hashmap,Java,Collections,Hashmap,我有一个通知对象列表,其名称为通知。我将其映射到HashMap中: Map<String, String> recipientByMedia = new HashMap<>(); for (Notification obj : notifications) { recipientByMedia.put(obj.getMedia(), obj.getRecipient()); } 我知道,HashMap会覆盖新的“I

我有一个通知对象列表,其名称为通知。我将其映射到HashMap中:

Map<String, String> recipientByMedia = new HashMap<>();
        for (Notification obj : notifications) {
            recipientByMedia.put(obj.getMedia(), obj.getRecipient());
        }
我知道,HashMap会覆盖新的“IM”,而不是旧的。最后,我想在“Mockoto.assertEqual”中使用这个HashMap,如下所示:

assertEquals(recipientByMedia.get("IM"), contact.getSmsNumber());
assertEquals(recipientByMedia.get("IM"), contact.getImAddress());

其中一项测试将失败。如何在测试中比较“IM”?我可以使用哪种数据结构来代替HashMap?

我认为,这是HashMap的一个特性,它在域和范围之间建立了一对一的关系

我建议你做不同的钥匙。像

assertEquals(recipientByMedia.get("IM0"), contact.getSmsNumber());
assertEquals(recipientByMedia.get("IM1"), contact.getImAddress());

既然类
通知
似乎是真理的唯一来源,为什么需要不同的数据结构?你想用
地图
完成什么

如果您想在列表中查找
通知
对象的属性,其中
getMedia
就是
“IM”
,您可以只过滤列表,直接从要保存此类信息的对象访问属性:

String recipient = notifications.stream()
  .filter(n -> "IM".equals(n.getMedia()))
  .findFirst()
  .orElseThrow(() -> new IllegalArgumentException(/* not in the list */))
  .getRecipient();

如果情况并非如此,并且您希望从多个源合成数据,请创建s以准确保存必要的信息,或者,如果出于某种目的更具可读性,只需使用这两个数据源即可获得组合信息。

使用setter和getter创建一个模型,然后使用ArrayList而不是像下面这样的Hashmap
private ArrayList ArrayList
然后在for循环中添加这个
arraylist.add(新StudensDetail(obj.getMedia(),obj.getRecipient())id=arraylist.get(i).getId()中编写此代码

这就是模型

public class StudentDetails {
private String name;
private String id;

public StudentDetails(String name, String id) {
    this.name = name;
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

}

谢谢。太棒了。但是,我怎样才能比较这些价值呢????“IM”有两个值,我想测试这两个值。我该怎么做????
public class StudentDetails {
private String name;
private String id;

public StudentDetails(String name, String id) {
    this.name = name;
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}