java - 使用键从 Map 获取现有对象

标签 java collections dictionary

对于用 java (Eclipse) 编写的应用程序,我创建了一个 Map,在其中保存自定义类的对象。

这个自定义类称为 Music 并具有以下构造函数:

public Music (String title, String autor, int code){
    this.setTitle(title);
    this.setAutor(autor);
    this.setCode(code);
}

该类有 3 个子类:VinylCDcassette 对其进行了扩展。这是 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/

相关文章:

java - 设置主框架不可调整大小

linux - 在 linux Bash 中设置

c# - 通过将字符串类型的列表设置为字典来创建字典

java - jetty 不关闭连接

java - 在 Ubuntu (OpenJDK 8) 上哪里可以找到 Java Mission Control 和 VisualVM?

java - 在java中,如何使用sendmail发送电子邮件?

java - 泛型继承 + 集合 + 方法 = 问题

java - 哈希表:发生碰撞时

java - ASCII 世界地图导入和读取

Python - 搜索字典