如何在java中存储和比较唯一对?哪种数据结构有用?
我有一个通知对象列表,其名称为通知。我将其映射到HashMap中:如何在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
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而不是像下面这样的Hashmapprivate ArrayList ArrayList
然后在for循环中添加这个arraylist.add(新StudensDetail(obj.getMedia(),obj.getRecipient())当您想要获取值时,在for循环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;
}