Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么ConcurrentHashMap put()返回null,但该项已成功放置?_Java - Fatal编程技术网

Java 为什么ConcurrentHashMap put()返回null,但该项已成功放置?

Java 为什么ConcurrentHashMap put()返回null,但该项已成功放置?,java,Java,我定义了这样一个地图: private Map<Integer, MyTask> taskMap = new ConcurrentHashMap<Integer, MyTask>(); 但我可以在上述记录器调用之后立即使用以下语句验证任务是否已成功放入: private String getAvailableTaskListStr() { Collection<MyTask> tasks = taskMap.values();

我定义了这样一个地图:

private Map<Integer, MyTask> taskMap = new ConcurrentHashMap<Integer, MyTask>();
但我可以在上述记录器调用之后立即使用以下语句验证任务是否已成功放入:

private String getAvailableTaskListStr()
    {
        Collection<MyTask> tasks = taskMap.values();
        if (tasks.isEmpty())
        {
            return "No running task";
        }
        String nameList = "";
        int index = 0;
        for (MyTask task : tasks)
        {
            if (index == 0)
            {
                nameList += task;
            }
            else
            {
                nameList += ", task";
            }
            index++;
        }
        return "TotalTasks in TaskMap is " + index + ": " + nameList;
    }
私有字符串getAvailableTaskListStr()
{
集合任务=taskMap.values();
if(tasks.isEmpty())
{
返回“无运行任务”;
}
字符串名称列表=”;
int指数=0;
for(MyTask任务:任务)
{
如果(索引==0)
{
名称列表+=任务;
}
其他的
{
名称列表+=“,任务”;
}
索引++;
}
return“TaskMap中的TotalTasks为”+索引+:“+名称列表;
}

我很困惑。有人能给我解释一下吗?我使用的是JDK 1.8.0_20。

Map返回以前的关联值。如果之前没有关联的值,它将返回
null
。这就是为什么您会得到
null

与键关联的上一个值,如果键没有映射,则为null

举个例子:

Map<Integer, String> taskMap = new ConcurrentHashMap<Integer, String>();
        String hello=taskMap.put(34, "Test1");
        System.out.println("hello "+hello);//It returns null
        hello=taskMap.put(34, "Test2");
        System.out.println("hello "+hello);//it returns Test1
hello null
hello Test1

映射返回以前的关联值。如果之前没有关联的值,它将返回
null
。这就是为什么您会得到
null

与键关联的上一个值,如果键没有映射,则为null

举个例子:

Map<Integer, String> taskMap = new ConcurrentHashMap<Integer, String>();
        String hello=taskMap.put(34, "Test1");
        System.out.println("hello "+hello);//It returns null
        hello=taskMap.put(34, "Test2");
        System.out.println("hello "+hello);//it returns Test1
hello null
hello Test1

那么,如何检查put()是否成功?总是成功?那么,如何检查put()是否成功?总是成功吗?