자바 Collections.sort()List 정렬 을 위 한 기본 방법 과 사용자 정의 방법

1.자바 가 제공 하 는 기본 list 정렬 방법
주 코드:

List<String> list = new ArrayList();list.add("   ");
list.add("  ");
list.add("  ");
list.add("  ");
list.add("  ");
//  
Collections.sort(list,Collator.getInstance(java.util.Locale.CHINA));//  :               ,              
for(int i=0;i<list.size();i++)
{
 System.out.print(list.get(i));
}
System.out.println("");
//  
Collections.reverse(list);//        ,           
for(int i=0;i<list.size();i++)
{
  System.out.print(list.get(i));
}
출력 결과:
이명 유 포 유 디 유 웬 왕 석
왕 석 유 원 원 유 디 유 부 이명
2.사용자 정의 정렬 규칙:
첫 번 째 는 model 류 가 Comparable 인 터 페 이 스 를 실현 하고 int compare To(Object o)를 다시 쓰 는 방법 입 니 다.
            model 클래스:

public class StudentDTO implements Comparable
{
 private String name;
 private int age;
public String getName()
{
 return name;
}
public void setName(String name)
{
  this.name = name;
}
public ObjType getType()
{
 return type;
}
public void setAge(int age)
{
  this.age= age;
}
@Override
public int compareTo(Object o)
{
  StudentDTO sdto = (StudentDTO)o;
  int otherAge = sdto.getAge();
  // note: enum-type's comparation depend on types' list order of enum method
  // so, if compared property is enum-type ,then its comparationfollow ObjEnum.objType order
  return this.age.compareTo(otherAge);
}
}
      :   
public static void main(String[] args)
{
  List<StudentDTO> studentList = new ArrayList();
  StudentDTO s1 = new StudentDTO ();
  s.setName("yuanyuan");
  s.setAge(22);
  studentList.add(s1);
     StudentDTO s1 = new StudentDTO ();
     s.setName("lily");
     s.setAge(23);
     studentList.add(s2);
     Collections.sort(studentList); //  age   22,23,
     Collections.reverse(studentList); //  age   23,22 
}
두 번 째 는 비교 기 류 가 Comparator 인 터 페 이 스 를 실현 하고 int compare(Object o 1,Object o 2)방법 을 다시 쓰 는 것 이다.
           model 클래스:          

public class StudentDTO implements Comparable
{
  private String name;
  private int age;
  public String getName()
  {
   return name;
  }
  public void setName(String name)
 {
   this.name = name;
  }
  public ObjType getType()
  {
   return type;
  }
  public void setAge(int age)
  {
   this.age= age;
  }
} 
       :
class MyCompartor implements Comparator
{
  @Override
  public int compare(Object o1, Object o2)
 {
   StudentDTO sdto1= (StudentDTO )o1;
   StudentDTO sdto2= (StudentDTO )o2;
   return sdto1.getAge.compareTo(stdo2.getAge())
 }
}
      :
public static void main(String[] args)
{
  List<StudentDTO> studentList = new ArrayList();
  StudentDTO s1 = new StudentDTO ();
  s.setName("yuanyuan");
  s.setAge(22);
  studentList.add(s1);
  StudentDTO s1 = new StudentDTO ();
  s.setName("lily");
  s.setAge(23);
  studentList.add(s2);
  MyComparetor mc = new MyComparetor();
  Collections.sort(studentList,mc);  //  age   22,23,
  Collections.reverse(studentList,mc); //  age   23,22 
}
주석:
1.배열 의 정렬 방법 은 다음 과 같다.

String[] names = {"  ", "  ", "  ", "  ", "  "}; 
Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE));//  ; 
System.out.println(Arrays.toString(names));  
2.한자 의 정렬:ICU4J 를 사용 하면 더 좋 은 결 과 를 얻 을 수 있 습 니 다.특히 성 이 생소 한 글자 일 때,
자바.text.collator 를 com.ibm.icu.text.collator 로 교체 하고,com.ibm.icu.util.ULocale 로 자바.util.Locale 을 대체 합 니 다.
3.매 거 진 유형의 enum 1.compare To(enum 2)는 매 거 진 유형 값 이 정 의 될 때의 선후 순서에 따라 비교 한 것 으로 뒤에 있 을 수록 크다.
값 의 자모 선착순 으로 비교 한 것 이 아니다.
 위 에서 말 한 것 은 소 편 이 소개 한 자바 Collections.sort()가 List 정렬 을 실현 하 는 기본 적 인 방법 과 사용자 정의 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기