2016-11-24 13 views
0

配列の値とキーをHashmapを使って印刷したいのですが、これを使用してAdressを取得しています。文字列配列と整数配列の値を持つHas​​hMap出力を出力しない

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());   
    } 
} 
関連する問題