对于用 java (Eclipse) 编写的应用程序,我创建了一个 Map,在其中保存自定义类的对象。
这个自定义类称为 Music
并具有以下构造函数:
public Music (String title, String autor, int code){
this.setTitle(title);
this.setAutor(autor);
this.setCode(code);
}
该类有 3 个子类:Vinyl
、CD
和 cassette
对其进行了扩展。这是 CD
类:
public CD(String title, String autor, String type, int code) {
super(title, autor, code);
this.setType(type);
}
然后,在另一个名为 ManageMusic
的类中,我创建了一些方法和 map :
private final Map<Integer, Music> musicMap;
public ManageMusic() {
musicMap = new HashMap<Integer, Music>();
}
如果我想向 map 添加一个对象,我有一个方法,基本上在这个例子中使用 CD
可以做到:
musicItem = new CD(title, autor, format, newCode);
musicMap.put(newCode, musicItem);
所有这些情况下的代码都是一个数字,我将其称为确定的对象,将其设置到 Map、删除它或从 Map 中获取它。
现在,我的问题是:当我想从 Map 获取一个对象并将其设置为字符串时,我这样做:
String object = musicMap.get(code).toString();
这样我应该从 Map 中获取对象并将其转换为字符串。
当传递的代码在 map 中不存在时,如何处理这种情况?
如何捕获异常或执行某些操作来告诉用户 Map 中没有包含该代码的元素?
最佳答案
您可以使用Ternary operator ?:
String object = musicMap.get(code) != null ? musicMap.get(code).toString() : "No item found.";
编辑:(感谢@user270349)
更好的方法
Music m = musicMap.get(code);
String object = (m != null) ? m.toString() : "No item found.";
关于java - 使用键从 Map 获取现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20564659/