为什么不';Java地图工作吗?函数.put()不插入值,只插入键

为什么不';Java地图工作吗?函数.put()不插入值,只插入键,java,Java,当我尝试插入与其键相关的值时,该值不会插入到映射中。看起来“id”没有任何价值,但它确实有 Map<String, Vector<String>> graph = new HashMap<String, Vector<String>>(); ArrayList<String[]> words = new ArrayList<String[]>(); Vector<String> ids =

当我尝试插入与其键相关的值时,该值不会插入到映射中。看起来“id”没有任何价值,但它确实有

    Map<String, Vector<String>> graph = new HashMap<String, Vector<String>>();
    ArrayList<String[]> words = new ArrayList<String[]>();
    Vector<String> ids = new Vector<String>();
    String[] id = null;
    
    Scanner scanner = new Scanner(new FileReader(fInName));
    while (scanner.hasNextLine()) {
       words.add(scanner.nextLine().split("\\s+"));
    }
    
    for(int i = 0; i < words.size(); i++) {
        id = words.get(i)[1].split("[,]", 0);
        for(int j = 0; j < id.length; j++) {
            ids.add(j, id[j]);
        }
        graph.put(words.get(i)[0], ids);
        id = null;
        ids.clear();            
    }
    
    for (Map.Entry<String, Vector<String>> entry : graph.entrySet()) {
        System.out.println("Key = " + entry.getKey() +
                         ", Value = " + entry.getValue());

    }
Map-graph=newhashmap();
ArrayList words=新的ArrayList();
向量ID=新向量();
字符串[]id=null;
Scanner Scanner=new Scanner(new FileReader(fInName));
while(scanner.hasNextLine()){
words.add(scanner.nextLine().split(\\s+));
}
for(int i=0;i
put()函数通过引用工作。所以

put (key, ids)
存储对运行clear()函数的同一ids对象的引用(内存指针)。试图“清理”你的记忆是值得称赞的,但在这种情况下,你是在自食其果。你想要的是这样的东西

Map<String, Vector<String>> graph = new HashMap<String, Vector<String>>();
ArrayList<String[]> words = new ArrayList<String[]>();
Vector<String> ids;
String[] id = null;

Scanner scanner = new Scanner(new FileReader(fInName));
while (scanner.hasNextLine()) {
   words.add(scanner.nextLine().split("\\s+"));
}

for(int i = 0; i < words.size(); i++) {
    id = words.get(i)[1].split("[,]", 0);
    ids = new Vector<String>();
    for(int j = 0; j < id.length; j++) {
        ids.add(j, id[j]);
    }
    graph.put(words.get(i)[0], ids);        
}
Map-graph=newhashmap();
ArrayList words=新的ArrayList();
向量ID;
字符串[]id=null;
Scanner Scanner=new Scanner(new FileReader(fInName));
while(scanner.hasNextLine()){
words.add(scanner.nextLine().split(\\s+));
}
for(int i=0;i
put()函数通过引用工作。所以

put (key, ids)
存储对运行clear()函数的同一ids对象的引用(内存指针)。试图“清理”你的记忆是值得称赞的,但在这种情况下,你是在自食其果。你想要的是这样的东西

Map<String, Vector<String>> graph = new HashMap<String, Vector<String>>();
ArrayList<String[]> words = new ArrayList<String[]>();
Vector<String> ids;
String[] id = null;

Scanner scanner = new Scanner(new FileReader(fInName));
while (scanner.hasNextLine()) {
   words.add(scanner.nextLine().split("\\s+"));
}

for(int i = 0; i < words.size(); i++) {
    id = words.get(i)[1].split("[,]", 0);
    ids = new Vector<String>();
    for(int j = 0; j < id.length; j++) {
        ids.add(j, id[j]);
    }
    graph.put(words.get(i)[0], ids);        
}
Map-graph=newhashmap();
ArrayList words=新的ArrayList();
向量ID;
字符串[]id=null;
Scanner Scanner=new Scanner(new FileReader(fInName));
while(scanner.hasNextLine()){
words.add(scanner.nextLine().split(\\s+));
}
for(int i=0;i
插入很好,但您正在清除向量。你认为
ids.clear()
有什么作用?我想在我把它放进图中之后删除所有元素,这样我就可以添加新的单词和值。我应该使用另一个函数吗?如果清除向量,向量将为空。不管你是在把它放进字典之前还是之后把它清除。如果不想清除它,则创建一个新向量(
new vector()
)您需要的是
new vector()
,而不是清除原始向量。明白。非常感谢各位。插入很好,但你们正在清除向量。你认为
ids.clear()
有什么作用?我想在我把它放进图中之后删除所有元素,这样我就可以添加新的单词和值。我应该使用另一个函数吗?如果清除向量,向量将为空。不管你是在把它放进字典之前还是之后把它清除。如果不想清除它,则创建一个新向量(
new vector()
)您需要的是
new vector()
,而不是清除原始向量。明白。非常感谢各位。