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()是否成功?总是成功吗?