我已经定义了LinkedHashMap。
LinkedHashMap<String,Vector<String>> hash = new LinkedHashMap<String,Vector<String>>();
我正在尝试遍历hashmap并将每个键的结果打印到文本文件中。目前它只返回每个向量中的第一个值。
for(Map.Entry<String,Vector<String>> entry : hash.entrySet()){
printWriter.println(">NM_"+sID+"_"+entry.getKey());
printWriter.println(entry.getValue());
}
例如,它是这样写的:
NM_152486.2_rheMac3
[MSKGILQVHPPICDCPGCRISSPV]
但实际上应该写一些更像这样的东西:
NM_152486.2_rheMac3
MSKGILQVHPPICDCPGCRISSPVVA-RVGRLFYMTGFPLAFPPPSAALRPPERELSLPHRPTSTSSSSSPYSG--PTPGCSSPKRENG--TP-------------
答案 0 :(得分:0)
只需使用for-each循环
LinkedHashMap<String,Vector<String>> hash = new LinkedHashMap<String,Vector<String>>();
Vector<String> v = new Vector<String>();
v.add ("a");
v.add ("b");
hash.put("key", v);
for(Map.Entry<String,Vector<String>> entry : hash.entrySet()){
System.out.println(entry.getKey());
for (String s : entry.getValue()) {
System.out.println(s);
}
}
修改强>
根据您的问题,我无法确定-
的来源,但您可以根据需要进行格式化
答案 1 :(得分:0)
它适用于我(即打印矢量的所有元素,用逗号分隔如下:[abc,def,ghijklmnop])
我尝试使用此代码模拟您的问题:
try {
PrintWriter printwriter = new PrintWriter(new File("d:\\a.txt"));
Vector<String> v = new Vector<String>();
v.add("abc");
v.add("def");
v.add("ghijklmnop");
Vector<String> v2 = new Vector<String>();
v2.add("111");
v2.add("222");
v2.add("333");
LinkedHashMap<String,Vector<String>> hash = new LinkedHashMap<>();
hash.put("a1", v);
hash.put("b2",v2);
for(Map.Entry<String,Vector<String>> entry : hash.entrySet()){
printwriter.println(">NM_"+entry.getKey());
printwriter.println(entry.getValue());
}
printwriter.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
文件内容为:
NM_a1 [abc,def,ghijklmnop]
NM_b2 [111,222,333]
linkedhashmap值是否可能包含只有1个元素的向量?
你能展示其余的代码吗?
答案 2 :(得分:0)
您应该看一下使用嵌套循环:
for(Map.Entry<String,Vector<String>> entry : hash.entrySet()){
printWriter.println(">NM_"+sID+"_"+entry.getKey());
for (String nestedString : entry.getValue())
{
printWriter.print(nestedString);
printWriter.print("-");
}
printWriter.println();
}
但是,我希望Vector toString()方法在调用
时被调用printWriter.println(entry.getValue());
写一个以逗号分隔的值列表。 (见http://www.java2s.com/Tutorials/Java/java.util/Vector/Java_Vector_toString_.htm)。既然它似乎没有这样做,也许你的代码中的某个地方你只需要为每个Vector添加一个字符串? 尝试尝试:
for(Map.Entry<String,Vector<String>> entry : hash.entrySet()){
printWriter.println(">NM_"+sID+"_"+entry.getKey());
for (String nestedString : entry.getValue())
{
printWriter.print(nestedString);
printWriter.print("-");
}
printWriter.println(" " + entry.getValue().size());
}
查看每个向量中是否确实只有一个字符串。