2017-01-24 13 views
-3

私は3つの列を持つ2つのcsvファイルを持っています。私はこれを読んでこれをhashmap()(複数のハッシュマップ)を使って比較しなければなりません。私は3列の2つのCSVファイルを持っていますが、これを読んでこれをhashmap()を使って比較してください

列:

Name,Value, Address 
aaa,1,sdasdasd 
bbb,2,sadasdasd 
ccc,3,dsadasds 

コード:

public class CompareFile { 

    public static void main(String args[]) throws IOException { 
     //HashMap<String, String> File1 = new HashMap<String, String>(); 
     String filepath1="D:\\XYZ\\File1.csv"; 
     String filepath2="D:\\XYZ\\File2.csv"; 
     HashMap<String, HashMap<String, String>> file1= new HashMap<String, HashMap<String, String>>(); 
     HashMap<String, HashMap<String, String>> file2= new HashMap<String, HashMap<String, String>>(); 
     CompareFile compareFile = new CompareFile(); 
     file1=compareFile.readFileContents(filepath1); 
     file2=compareFile.readFileContents(filepath2); 
     //compareFile.CompareTwo(file1,file2); 
    }// 

    public HashMap<String, HashMap<String, String>> readFileContents(String file) throws IOException { 

     BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); 
     String line=null; 
     String[] str=null; 
     HashMap<String, HashMap<String, String>> mapHashMap = new HashMap<String, HashMap<String, String>>(); 
     while((line=bufferedReader.readLine())!=null) 
     { 
      str = line.split(","); 
      HashMap<String, String> hashMap = new HashMap<String, String>(); 
      hashMap.put(str[1], str[2]); 
      mapHashMap.put(str[0], hashMap); 

     } 
     for (Map.Entry<String, HashMap<String, String>> entry : mapHashMap.entrySet()) 
     { 
      System.out.println(entry.getKey() + " " + entry.getValue()); 
     }return mapHashMap; 
    } 

    public void CompareTwo(HashMap<String, HashMap<String, String>> file1,HashMap<String, HashMap<String, String>> file2)throws IOException { 
    { 
     for(Map.Entry<String, HashMap<String, String>> entry1:file1.entrySet()) 
     { 
      String key1=entry1.getKey(); 
      HashMap<String, String> value1=entry1.getValue(); 
      for(Map.Entry<String, HashMap<String, String>> entry2:file2.entrySet()) 
      { 
       String key2=entry2.getKey(); 
       HashMap<String, String> value2=entry2.getValue(); 

       if(key1==key2) 
       { 

        System.out.println(key2 + "\t" + value1 + "\t" + value2); 
       } 


      }// 

     }// 
    }// 
}// 
+2

ようこそ。 [良い質問をするにはどうすればいいですか?]を読んでください。(http://stackoverflow.com/help/how-to-ask)あなたの質問は、今のところ「あなたのコードを書いてください」です。ようこそ。何かを試して、あなたが遭遇した特定の問題に戻ってください。 – lexicore

+0

私は上記の2つのcsvを読みましたが、私はハッシュマップに入れたこれらの2つのファイルを比較するロジックを知りたいです – UnfortuanteEngineerq

+0

@UnfortuanteEngineerq申し訳ありませんが、 "私は論理を知りたい"それをより良くしません。 – lexicore

答えて

-1

は、私はあなたのソリューションを設計する方法を考えるべきだと思います。まず、Csvファイルの内容を表すクラスをいくつか作成し、csvファイルの各行は何か...

たとえば、「CsvFile」という名前のJavaクラスを作成します。このクラスには、あなたのファイルのデータであり、これらの属性は新しいJavaクラス(例えば "CsvRow")になる可能性があります。

ファイルを読み込むために、InputStreamReader javaクラスを使用してファイルを読み込んで読み込みます。

このよう
reader.read(); 

:オーバー

File file = new File("C:/ ... "); 
InputStream stream = new FileInputStream(file); 
InputStreamReader reader = new InputStreamReader(stream, "ISO-8859-1"); 

その後のことができ、ループ

String contentFile; 
char[] buffer = new char[10000]; 
int n; 
while ((n = reader.read(buffer)) > 0) { 
    contentFile.append(buffer, 0, n); 
} 
reader.close(); 

これはあなたのファイルを読み込み、コンテンツを取得するだけの方法です。しかし、あなたはまだ自分のクラスにこのファイルの内容をロードする必要があります。

+0

CSVファイルはquestion..3の列に表示されているとおりです。すべて読み込み、読み込んだり比較したりする必要があります。 – UnfortuanteEngineerq

関連する問題