【问题标题】:Refactoring methods from ArrayList to HashMap将方法从 ArrayList 重构为 HashMap
【发布时间】: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&lt;&gt; 不允许两个具有相同键的条目。

标签: java arraylist hashmap refactoring


【解决方案1】:
public boolean addTo(Record record) {
    if(exists(record)){
       return false;
    } else {
       map.put(record.getTitle(), record);
       return true;
    }   
}

【讨论】:

  • 非常感谢!看起来很简单。
猜你喜欢
  • 2011-12-09
  • 2017-08-14
  • 2020-07-09
  • 1970-01-01
  • 2018-04-12
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多