2016-11-24 61 views
0

我想要使用Hashmap打印數組的值和鍵......但是我正在使用這個來獲取地址。帶字符串的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

其數組.............. entry.getValue給出該數組的引用,而不是數組元素 –

+0

您可以給出一個樣本條目,您如何期待它是? – Mritunjay

+0

將不同的鍵映射到相同的地圖時,您可能會更容易,或者這會給您帶來問題嗎?或者它真的是你正在尋找的HashMap ? – patrik

回答

1

使用:

System.out.println("key: " + entry.getKey() + " value: " + Arrays.toString(entry.getValue())); 
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]); 
     } 
    } 
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); 
     } 
    } 
0

您試圖在entrySet中輸入每個條目的值的整個數組。

Array的默認toString()方法只返回對象的地址。因此,您需要使用其他方法,例如Arrays.toString(entry.getValue()),或者創建自己的方法以您需要的格式打印數組。

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());   
    } 
} 
相關問題