首页 > 解决方案 > 我为 SortedMap 创建了一个 put() 方法,但似乎无法让测试代码工作

问题描述

我只是无法让它工作。想法是设计一种在 Map 中添加 Key Value 对的方法,虽然程序编译正确,但测试格式为“tracker.put("17/06/2019", "Jeffrey Burns");" 的代码会报错信息

我尝试将方法参数更改为(字符串,列表)。

public class OfficeDeliveryTracker

private SortedMap<String, List<String>> deliveryTracker; 

/**
* Constructor for objects of class OfficeDeliveryTracker
*/
public OfficeDeliveryTracker()
{
  this.deliveryTracker = new TreeMap<>();  
}
/**
 * Adds key-value pair to the map
 */
public void addMapEntry(String key, String value)
{
   List<String> list = deliveryTracker.get(key);
   if (list == null) {
     list = new ArrayList<String>();
   }
   list.add(value);
   deliveryTracker.put(key, list);
 }

我期望测试代码 tracker.put("17/06/2019", "Jeffrey Burns"); 工作,而是得到“错误:第 1 行 - 找不到符号 - 方法 put(java.lang.String,java.lang.String)”

标签: javadictionary

解决方案


查看以下代码:

正如您使用SortedMap<String, List<String>> 的那样,它将字符串作为键,将字符串列表作为值。

你不能使用tracker.put("17/06/2019", "Jeffrey Burns")“Jeffrey Burns”是字符串而不是字符串列表

public class OfficeDeliveryTracker {
    private SortedMap<String, List<String>> deliveryTracker;

    /**
     * Constructor for objects of class OfficeDeliveryTracker
     */
    public OfficeDeliveryTracker() {
        this.deliveryTracker = new TreeMap<>();
    }

    /**
     * Adds key-value pair to the map
     */
    public void addMapEntry(String key, String value) {
        List<String> list = deliveryTracker.get(key);
        if (list == null) {
            list = new ArrayList<String>();
        }
        list.add(value);
        deliveryTracker.put(key, list);
    }

    public static void main(String[] args) {
        OfficeDeliveryTracker tracker = new OfficeDeliveryTracker();
        //tracker.put("17/06/2019", "Jeffrey Burns"); // Error : The method put(String, String) is undefined for the type OfficeDeliveryTracker;
        tracker.addMapEntry("17/06/2019", "Jeffrey Burns");
    }
}

推荐阅读