我希望使用Hashmap打印数组的值和键...但是我使用它来获取地址。
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import au.com.bytecode.opencsv.CSVReader;
import java.util.Arrays;
import java.util.Collection;
public class ArrayHash
{
public static void main(String args[]) throws IOException
{
int[] WorkingDay=new int[13];
int i=0;
String[] Name=new String[13];
String file="C:\\Users\\Dhananjay Kumar\\Empdetail\\Detail.csv";
HashMap<String[],int[]> hashfunc=new HashMap<String[],int[]>();
CSVReader reader=new CSVReader(new FileReader(file));
String[] read;
while((read = reader.readNext()) !=null)
{
WorkingDay[i]=Integer.parseInt(read[2]);
Name[i]=read[0];
i++;
}
hashfunc.put(Name,WorkingDay);
hashfunc.get(Name);
Set<Entry<String[], int[]>> entrySet = hashfunc.entrySet();
for (Entry entry : entrySet)
{
System.out.println("key: " + entry.getKey() + " value: " + entry.getValue());
}
}
}
答案 0 :(得分:1)
使用:
System.out.println("key: " + entry.getKey() + " value: " + Arrays.toString(entry.getValue()));
答案 1 :(得分:0)
entry.getValue()
提供该数组的引用,而不是数组元素
使用 Arrays.toString((int[]) entry.getValue())
以便打印值。
或使用for循环到数组长度并打印每个值
for(Entry entry : entrySet) {
int[] arrInt = (int[]) entry.getValue();
String[] arrString = (String[]) entry.getKey();
for(int j=0; j<arrInt.length; j++){
System.out.println(arrInt[j]);
}
}
答案 2 :(得分:0)
hashfunc
将数组引用保存为键,因此打印地址。
for (Entry entry : entrySet)
{
System.out.println("key: " + entry.getKey() + " value: " + entry.getValue());
String[] names=entry.getKey();
for(String name:names){
System.out.println(name);
}
int[] workingDays=entry.getValue();
for(int workingDay:workingDays){
System.out.println(workingDay);
}
}
答案 3 :(得分:0)
您正在尝试打印整个数组以获取entrySet中每个条目的值。
Array的默认toString()方法只返回对象的地址。因此,您需要使用其他方法,例如Arrays.toString(entry.getValue())
,或创建自己的方法以您需要的格式打印数组。
答案 4 :(得分:0)
看起来好像你真的需要HashMap<String,Integer>
类型的对象。此外,Java中有一个书面编码约定,它声明开头{
应该与声明的声明位于同一行。我也没有找到它,但由于这是惯例,我遵循它。
public static void main(String args[]) throws IOException {
String file="C:\\Users\\Dhananjay Kumar\\Empdetail\\Detail.csv";
HashMap<String,Integer> hashfunc=new HashMap<String,Integer>(); // !!!
CSVReader reader=new CSVReader(new FileReader(file));
String[] read;
while((read = reader.readNext()) !=null) {
haschfunc.put(read[0], Integer.parseInt(read[2])); // !!!
}
for (Entry entry : hashfunc.entrySet()) {
System.out.println("key: " + entry.getKey() + " value: " + entry.getValue());
}
}