2014-06-09 3 views
0

나는 파일에서 데이터를 가져와 프로그램이 있습니다알파벳순으로 정렬 출력 파일

Id  First Name Last Name 
1  John   Smith 
2  Joe   Blow 
3  Cat   Dog 

그런 다음 데이터를 받아 주어진 정보에 따라 사용자 이름과 암호를 생성 위 :

Id  Username Password 
1  SmJo1  w6o3ju2y 
2  BlJo2  kv4nbu4a 
3  DoCa3  7gpxlaup 

기본적으로 내 프로그램은 동일한 순서로 내 출력 파일을 구성하는성에 따라 사전 순으로 입력 파일을 구성하는 것이지만,이 방법에 대해서는 잘 모릅니다.

+4

어떻게 읽었습니까? 명부? 정렬? . 적어도 몇 가지 코드가 필요합니다. – TheLostMind

+2

클래스와 맞춤 비교 기능은 친구입니다. – kajacx

+0

파일의 각 열을 가져 와서 별개의 배열에 추가합니다. 하나는 ID 용이고 다른 하나는 이름 용이고 다른 하나는성에 대한 것입니다. 그런 다음 사용자 이름과 암호를 생성하고이를 다른 2 개의 배열에 넣습니다. – user3722678

답변

0

키를 성으로 사용할 수 있고 값을 쉼표로 구분 한 이름 및 ID 문자열로 사용할 수있는 TreeMap을 사용할 수 있습니다. 또는 값을 FirstName과 Firstname을 문자열로 저장 한 ArrayList로 지정할 수 있습니다. 검색 후 그들을 변환합니다.

treeMap은 성을 정렬 된 순서로 자동 저장합니다.

0

짧은 요소

Collections.sort(persons); 

의 배열을 Person 클래스 후

public class Person implements Comparable<Person> { 

    private String firstName; 
    private String lastName; 
    private String username; 
    private String password; 

    //do stuff 

    public int compareTo(Person p) { 
    lastName.compareTo(p.lastName); 
    } 

    public void writeToFile(FileWriter file) { 
    //Implements 
}  

} 

을 작성하고 다음과 같이 Person 클래스를 가정 위해

for (Person p : persons) { 
    p.writeToFile(fileWriter); 
} 
1

에있는 사람을 쓰기 :

아래 그림과 같이

당신은 컬렉션의 정적 sort 방법을 사용하여 사람 개체의 목록을 정렬 할 수 있습니다 : 당신이 여기 얻을 것이다

List<Person> persons = new ArrayList<Person>(); 
    persons.add(new Person(1, "John", "Smith")); 
    persons.add(new Person(2, "Joe", "Blow")); 
    persons.add(new Person(3, "Cat", "Dog")); 

    Collections.sort(persons, new Comparator<Person>() { 
     public int compare(Person p1, Person p2) { 
      String lastName1 = p1.getLastName(); 
      String lastName2 = p2.getLastName(); 
      return lastName1.compareTo(lastName2); 
     } 
    }); 
0

솔루션은 아마 상당히 유사합니다. 여기 내 것이 있습니다 :

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class User implements Comparable<User> { 
    private int id; 
    private String firstName; 
    private String lastName; 

    public User(int id, String firstName, String lastName) { 
     this.id = id; 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    public int compareTo(User other) { 
     int lastNameComparison = lastName.compareTo(other.lastName); 

     return (lastNameComparison != 0 ? lastNameComparison : firstName 
       .compareTo(other.firstName)); 
    } 

    @Override 
    public String toString() { 
     return String.format("%d\t%s\t%s", id, firstName, lastName); 
    } 

    public static void main(String... args) { 
     List<User> users = new ArrayList<User>(); 
     users.add(new User(1, "John", "Smith")); 
     users.add(new User(2, "Joe", "Blow")); 
     users.add(new User(3, "Cat", "Dog")); 

     Collections.sort(users); 

     for(User user : users) { 
      System.out.println(user.toString()); 
     } 
    } 
}