2017-01-24 17 views
-3

У меня есть два файла csv, имеющие 3 столбца. Я должен прочитать это и сравнить это, используя hashmap() (несколько хэш-карт).У меня есть два 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

Добро пожаловать в SO. Пожалуйста, прочитайте [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask). Ваш вопрос, поскольку он стоит сейчас, это просто «напишите свой код для меня», который на самом деле не является Добро пожаловать. Попробуйте что-нибудь и вернитесь с определенными проблемами, с которыми вы столкнулись. – lexicore

+0

Я прочитал два csv, как в приведенном выше формате, и я хочу знать логику сравнения этих двух файлов, которые я положил в hashmap – UnfortuanteEngineerq

+0

@UnfortuanteEngineerq Извините, маскировка «напишите код для меня» с «Я хочу знать логику», не делает его лучше. – lexicore

ответ

-1

Я думаю, вы должны думать о том, как проектировать свое решение. Начните с создания некоторых классов для представления того, что представляет собой файл Csv, каждая строка в вашем файле csv и т. Д.

Например, создайте класс java с именем «CsvFile», который будет содержать некоторые атрибуты, которые представляют datas в ваших файлах, и этими атрибутами может быть какой-то новый класс java для (например, «CsvRow») ...

Для чтения вашего файла используйте класс InputStreamReader java для чтения и загрузки вашего файла.

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

Тогда вы можете перебираем:

reader.read(); 

Как это:

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

Это просто, как прочитать файл и получить содержимое. Но вам все равно придется загружать этот файл в свои собственные классы.

+0

CSV-файл, как показано в вопросе..3 столбцы, которые все .. все, что мне нужно сделать, это прочитать его, загрузить и сравнить. У меня возникли проблемы при загрузке, и я хочу, чтобы логика сравнивалась – UnfortuanteEngineerq