2013-04-04 3 views
-1

은 "은, Collections.sort (목록) 방법 이외의 출력 상자에 개별적으로 사용자 입력?정렬 방법없이 알파벳 순으로 정렬하면

import java.util.*; 

public class UserInput 
{ 
public static void main(String[] args) { 
List<String> list = new ArrayList<String>(); 
Scanner stdin = new Scanner(System.in); 

do { 
    System.out.println("Enter a name: "); 
    String strin = stdin.next(); 
    if (isNumeric(strin)) { 
     System.out.println("Please add a non numeric value"); 
    } else { 
     list.add(strin); 
    } 

    Collections.sort(list); 
    System.out.println("Current list is " + list); 
    System.out.println("Add more? (y/n)"); 

} while (stdin.next().startsWith("y")); 

System.out.println("List is " + list); 
String[] arr = list.toArray(new String[0]); 
System.out.println("Array is " + Arrays.toString(arr)); 
} 

public static boolean isNumeric(String str) { 
return str.matches("-?\\d+(\\.\\d+)?"); 
} 
} 
+2

수의 문자열 정렬 알고리즘을 수동으로 구현할 수 있지만 기본 라이브러리 구현을 사용하지 않으시겠습니까? 각 항목을 사용하여 전체 모음을 불필요하게 다시 정렬하지 않으려면 삽입시 정렬되는 모음 (예 : TreeSet -> http://docs.oracle.com/javase/6/docs/api/)을 사용하십시오. java/util/TreeSet.html –

+0

원하는 정렬 알고리즘을 구현하는 데 방해가되는 것은 없습니다. 전통적인 버블 정렬은 마음에 오는 첫 번째 것입니다 ... – jahroy

+0

왜 바퀴를 재발견합니까? 사용자 지정 정렬을 수행하려는 경우 Collections.sort를 자신의 Comparator와 함께 사용하십시오. – Bizmarck

답변

4

당신은을 사용할 수있는 이름의 목록을 정렬하는 그들의 또 다른 방법입니다 TreeSet는 이름을 저장합니다. 당신이 정렬 순서를 사용자 정의해야하는 경우도 Comparator로 제공 할 수 있습니다.

편집

@jahroy 댓글을 달았습니다, 그것은 승 것이다 ork는 (TreeSet) 요소가 삽입 될 때 정렬되므로 나중에 정렬 할 필요가 없습니다.

+0

정확합니다. 추가해 주셔서 감사합니다. – NilsH

+0

@jahroy : 좀 더 정확해야합니다. 당신이 말하는 것은'TreeSet'에 대해서만 유효하고'Set'에 대해서는 true가 아닙니다. – jlordo

+0

@jahroy 쓰레기. 원하는 순서대로 저장 및 반복을 설정합니다. 이것에 대한 예외는 소트 된 순서로 반복하는 SortedSets (예 : TreeSer)와 삽입 된 순서로 반복하는 특별한 LinkedHashSet입니다. – Bohemian

관련 문제