2014-01-31 4 views
0

Я хочу использовать Separtor и различные поля в HashMap, я пытаемся написать программу для поиска дубликатов ПгвЬЫата и LastName полех данных, чем добавить номер sequction, Проверить ПгвЬЫат & & Lastname во всех записях , если это Firstname & & Lastname нашел дубликат добавить seqNumber в feilds как 0,1,2,3 .. если не нашли дублируют чем 0Java HashMap Sepator и Поля

Я пишу код работает нормально .. но, это проверка линия .. вместо полей, мне нужно проверить 2 поля: имя и фамилия.

Пожалуйста, помогите мне!

здесь inputdata файл: - У меня есть файл данных, как:

CustmerNumber,FirstName,LastName,Address1,city 
123456789,abcd,efgh,12 spring st,atlanta 
2345678,xyz,lastname,16 sprint st,atlanta 
232345678,abcd,efgh ,1201 sprint st,atlanta 
1234678,xyz,lastname,1234 oakbrook pkwy,atlanta 
23556,abcd,efgh,3201 sprint st,atlanta 
34564,robert,parker,12032 oakbrrok,atlanta 

Я хочу файл выходных данных, как:

CustmerNumber,FirstName,LastName,Address1,city,**SEQNUMBER** 
123456789,**abcd,efgh**,12 spring st,atlanta,**0** 
232345678,**abcd,efgh** ,1201 sprint st,atlanta,**1** 
23556,**abcd,efgh**,3201 sprint st,atlanta,**2** 
2345678,**xyz,lastname**,16 sprint st,atlanta,**0** 
1234678,**xyz,lastname**,1234 oakbrook pkwy,atlanta,**1** 
34564,**robert,parker**,12032 oakbrrok,atlanta,**0** 

Вот мой код:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.HashMap; 
import java.util.Map; 
import java.util.Scanner; 


public class test1 { 

    /** 
    * @param args 
    * @throws FileNotFoundException 
    */ 
    public static void main(String[] args) throws FileNotFoundException { 
     // TODO Auto-generated method stub 

     Map<String, Integer> names = new HashMap<>(); 

     File dir = new File("Data_File_In"); 

     for (File file : dir.listFiles()) { 
      Scanner s = new Scanner(file); 

      s.nextLine(); 

      while(s.hasNextLine()) { 
       String line = s.nextLine(); 
       if(!names.containsKey(line)) { 
        names.put(line, 0); 
       } 
       names.put(line, names.get(line) + 1); 
      } 
      for(String name : names.keySet()) { 
       for(int i = 1; i <= names.get(name); i++) { 
        System.out.println(name + "---->" + (i-1)); 
       } 
      } 

      s.close(); 

     } 

    } 

} 

Мои Код - это строка проверки, если строка дублируется, чем номер последовательности - 0,1,2 .... , если не такая же, как и снова y 0 Вместо этого нужно использовать поля firstname и lastname. Пожалуйста, помогите мне! Спасибо!

+1

Используйте String # split() для доступа к отдельным полям или используйте [CSVReader] (http://opencsv.sourceforge.net/apidocs/au/com/bytecode/opencsv/CSVReader.html) и 'CSVWriter' для чтения и писать CSV-файлы. – harpun

+0

Спасибо за помощь, я действительно понятия не имею, как использовать поля в hashmap, чтобы найти дубликаты и добавить число 0,1,2,3. Пожалуйста, помогите мне !! Заранее спасибо!! – user3187463

ответ

0

Разобрать свою линию, так что вы знаете значение firstName и lastName
для каждой строки. Затем для каждой линии используют, например, firstName + "###" + lastName
как ключ вашей карты. Значения на вашей карте будут, например, Integer значения
(это подсчеты). При чтении строки постройте свой ключ и посмотрите, есть ли он на карте уже
. Если да - увеличьте значение, то есть count, в противном случае
добавьте новую запись на карту с count=1.

+0

Я не знаю, как использовать поля firstname и lastname в hashmap, не могли бы вы помочь мне! Я начинаю в java, помогите мне! Спасибо в продвинутом !! – user3187463

+0

Не могли бы вы помочь мне, пожалуйста. Я не знаю, как использовать поля и разделители в hashmap .. пожалуйста, помогите мне !! Благодаря!! – user3187463

+0

Прочитайте строку за строкой, вызовите String.split. В возвращенном массиве вы будете иметь firstName и lastName. –