【发布时间】:2016-03-10 22:11:41
【问题描述】:
我需要帮助重构我的代码,从使用 ArrayList 到 HashMap。
我已经建立了一个可以存储我的记录的库。我用标题、艺术家和唱片的类型(CD、乙烯基等)制作了一张新唱片。我为这些做了一个存档。
下面的这个方法检查记录是否存储在档案中,如果是则返回 true,否则返回 false。我设法将这个重构为 HashMap。
public boolean exists(Record record) {
if(map.containsKey(record.getTitle())) {
return true;
}
return false;
}
下面的这个方法将一条新记录添加到档案中,如果记录已添加,则使用我之前的方法返回 true,如果记录已存在于 arraylist 中,则返回 false。这个我需要帮助来重构为 HashMap。
public boolean addTo(Record newRecord) {
if(exists(newRecord)){
return false;
} else {
map.add(newRecord);
return true;
}
以下是我重构它的尝试。为归档类添加了字段变量和构造函数。
public class MediaArchive
{
private String name ;
private String owner ;
private HashMap<String, Plate> map;
public MediaArchive() {
map = new HashMap<String, Record>();
}
public boolean addTo(Record record) {
if(exists(record)){
return false;
} else {
map.add(record);
return true;
}
}
}
所以我需要帮助重构我的“addTo”方法,以便它可以将记录添加到 HashMap。
【问题讨论】:
-
哈希可以使用
put方法 -
所以将我的 .add 更改为 .put?我有点尝试过。我的代码可能不符合标准。能详细点吗?
-
我很快注意到的一件事是你的类名
MediaArchive与构造函数名MedieArkiv不匹配 -
@Bunti 是的,我不得不将我的代码从挪威语重写为英语,这可能就是原因。
-
两张专辑同名时你会怎么做? Java
Map<>不允许两个具有相同键的条目。
标签: java arraylist hashmap refactoring