我为SortedMap创建了put()方法,但似乎无法使测试代码正常工作

时间:2019-05-06 11:39:25

标签: java dictionary

我无法使它正常工作。想法是设计一种将“键值”对添加到Map的方法,尽管程序可以正确编译,但是测试代码的格式为“ tracker.put(“ 17/06/2019”,“ Jeffrey Burns”);“出现错误消息

我尝试将方法参数更改为(String,List)。

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)”

1 个答案:

答案 0 :(得分:2)

查看以下代码:

  

当您使用SortedMap<String, List<String>>时,它将String作为键,并将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");
    }
}