我有一个通知对象列表,它的名字是通知。我将它映射到HashMap:
"IM" : "+928292929"
"IM" : "test@yahoo.com"
我的通知列表具有两个不同的值,用于" IM" :
assertEquals(recipientByMedia.get("IM"), contact.getSmsNumber());
assertEquals(recipientByMedia.get("IM"), contact.getImAddress());
我知道,HashMap会覆盖新的" IM"相反,最古老的。最后,我想使用这个HashMap来使用" Mockoto.assertEqual"像这样:
const styles = StyleSheet.create({
container: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0
},
map: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
width: 200,
height: 200
},
});
其中一项测试将失败。我怎样才能比较" IM"在我的测试?我可以使用哪种数据结构代替HashMap?
答案 0 :(得分:1)
我认为,这是哈希映射的一个特征,它在域和范围之间建立一对一的关系。
我建议你制作不同的钥匙。像
assertEquals(recipientByMedia.get("IM0"), contact.getSmsNumber());
assertEquals(recipientByMedia.get("IM1"), contact.getImAddress());
答案 1 :(得分:1)
由于课程Notification
似乎是单一的事实来源,为什么你需要不同的数据结构?你想用Map
做什么?
如果要查找列表中Notification
对象的属性getMedia
,请说"IM"
,您只需过滤列表并直接从对象访问属性那是为了保存这种信息:
String recipient = notifications.stream()
.filter(n -> "IM".equals(n.getMedia()))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException(/* not in the list */))
.getRecipient();
如果不是这种情况并且您想要从多个来源撰写数据,请创建POJO以获取保存必要信息的确切目的,或者只使用2个数据源获取组合信息(如果是出于某种目的更具可读性。
答案 2 :(得分:0)
使用setter和getter创建一个Model,然后使用ArrayList而不是像这样private ArrayList<StudentsDetail> arraylist;
的Hashmap,然后在for循环中添加这个arraylist.add(new StudensDetail(obj.getMedia(), obj.getRecipient()));
,当你想获取值时,在你的内部写下这个代码for loop 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;
}
}