2012-11-29 3 views
2

내가 가진 두 개의 A는 [] 오름차순으로자바 문자열 배열

그 결과 내가 같은 결과를 얻을 수있는 방법

String a[]={"02","05","10","11","24","28","29","37","43","86"}; 
String b[]={"c","w","r","a","q","x","s","z","f","x"}; 

을했습니다

내가 배열을 정렬 할
String a[]={"11","02","43","24","05","86","37","28","29","10"}; 
String b[]={"a","c","f","q","w","x","z","x","s","r"}; 

배열 위의 사용 자바? Java에서 사용할 수있는 정렬 방법은 무엇입니까?

+3

무엇을 시도 했습니까? 그리고 다른 데이터 구조를 사용해야합니다. 정렬 된 첫 번째 배열에 따라 두 번째 배열의 요소를 정렬 할 수 없습니다. 필요한 '지도'가 될 수 있습니다. –

+1

@Rohit : 물론 가능합니다. 단지 원하지 않을 것입니다. 또한'Map'에 대한 당신의 생각은'TreeMap' 키를 정렬 한지도가 있다고 생각할 때 훨씬 좋습니다. –

+0

@MarkPeters ..글쎄, 사실'cannot'으로'가능한 '해결책이 될 수 없다는 뜻입니다. 현대 세계에서 '고대인의 삶'과 같은 것입니다. –

답변

5

가장 쉬운 방법은 두 개의 데이터를 별도의 배열에 저장하는 대신 몇 가지 방법으로 연결하는 것입니다. 많은 사람들이 훌륭한지도를 제안했습니다. 정확히 무엇을하려고하는지에 따라 Comparable을 구현하는 2 개의 변수를 가진 새로운 클래스를 고려할 것입니다. Comparable는 Collections.sort에 사용할 다른 Comparator가 지정되어 있지 않은 경우에, 그것이 Collection (이 경우는 배열)에있을 때의 클래스의 자연 순서 부를 정의합니다. 그것은 다음과 같이 보일 것입니다 :

public class Data implements Comparable{ 
    private String stringOne; 
    private String stringTwo; 

    @Override 
    public int compareTo(Object obj) { 
     stringOne.compareTo((String)obj); 
    } 

다른 곳에 전화 :

Collections.sort(locationOfDataCollection); 

그런 다음 데이터의 하나 명의 컬렉션을 생성하고 getter 메소드와 다른 문자열에 액세스 할 수 있습니다. 이 구현은 또한 새로운 Comparator (예 : stringTwo를 기준으로 정렬)로 자연 순서를 재정의해야하는 경우 (Strategy Design 참조) 향후에도 간단하게 만들 수 있습니다 (전략 디자인 참조).

+0

+1, 좋은 설명. – dreamcrash

0

Java에서 직접 수행 할 수있는 방법이 없습니다. 두 가지 옵션이 있습니다.

1) Map<String, String>을 정의하고 ("11", "a"와 같이) 모든 쌍을 그 안에 넣습니다. 첫 번째 배열 (또는지도의 키)을 정렬하고 그 순서로지도의 요소를 검색하십시오.

2) 각 파를 보유하고있는 객체를 만들고 List을 만들고 그 번호로만 비교 (Comparable 구현 또는 Comparator 작성). 당신은 데이터의 2 개 관련 세트를 가지고 있기 때문에

4

, 나는 Pair<String,String> 타입의 객체를 통해 이러한 연결 한 후 List<Pair>로, 또는 Map<String,String>에 넣어 것 중 하나. 아마도 첫 번째 해결 방법은보다 직관적입니다.

public class Pair implements Comparable<Pair> { 
    public String first; 
    public String second; 

    // equals/hashcode etc. 
} 

일단 표준 Java 콜렉션에 포함되면,이를 정렬하기위한 많은 솔루션이 있습니다. 예 : 위의 Pair에서 Collections sorting mechanisms이 사용할 Comparable<T> 인터페이스를 구현했습니다.

+0

+1, 나는 대단히 유용한 추상화 인 Pair를 발견했습니다. 또한 "zip"유틸리티 메소드를 구현하여 두 개의 콜렉션을 한 쌍의 콜렉션 (그리고 그 반대 인 "unzip")으로 결합하는 것이 유용 할 것입니다. – ach

0

문자열은 정수와 동일한 규칙에 따라 정렬되지 않는다는 점을 알아야합니다. String으로 정렬하는 배열을 떠날 경우 얻을 수있는 것에 놀랄 것입니다.