gpt4 book ai didi

java - Java 中的 map 接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:09 26 4
gpt4 key购买 nike

Map#get 方法返回键映射到的值还是返回值的引用?代码(这是我正在开发的程序):

    Map<String,Vector<String>> map=new TreeMap<String,Vector<String> >();  
for(String line:services)
{
String[] set=line.split(" ");
Vector<String> t=new Vector<String>();
String BioService=set[0];
int i=1;
while(i<set.length)
{
t.clear();
if(map.containsKey(set[i]))
t=map.get(set[i]);
t.addElement(BioService);
map.put(set[i],t);
/*if i put t.clear() here i get null values in my output*/
i++;
}
}

最佳答案

它返回对象的引用。

在 Java 中您永远不会拥有实际的对象,只有对它的引用。

你确实有实际的图元(并且不能有对图元的引用,只有对包装图元或类似东西的对象的引用),但是图元当然不能放入映射中,只有对象可以。

假设您有以下代码:

Map<String,Vector<String>> map = new HashMap... // etc
Vector<String> vec = new Vector<String>();
vec.addElement("foo");
map.put("foo",vec);
vec.clear();
vec.addElement("bar");
map.put("bar",vec);

Vector<String> ret = map.get("foo");
System.out.println(ret.get(0)); // prints bar

您只能使用一个 vector 。您将 vector 放入 map 中,然后在下一次迭代中将其清除。好吧,您刚刚清除了 map 内的 vector !仅仅因为您将它放在 map 中并不意味着它无法更改。

我觉得你最好的选择是为每个条目创建一个新 vector 。

所以替换

t.clear();

t = new Vector<String>();

关于java - Java 中的 map 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8896094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com