>  기사  >  Java  >  Java는 목록 정렬을 위한 기본 및 사용자 정의 방법을 구현합니다.

Java는 목록 정렬을 위한 기본 및 사용자 정의 방법을 구현합니다.

怪我咯
怪我咯원래의
2017-07-02 10:26:362148검색

이 글에서는 목록 정렬을 구현하기 위한 Java Collections.sort()의 기본 및 사용자 지정 메서드를 주로 소개합니다. 필요한 친구는

1.java

기본 코드:

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));
}
에서 제공하는 기본 목록 정렬 메서드를 참조할 수 있습니다.


출력 결과:

Li Ming Liu Bu Liu Di Liu Yuanyuan Wang Shuo

Wang Shuo Liu Yuanyuan Liu Di Liu Bu Li Ming

2. 사용자 정의 정렬 규칙:

첫 번째는 모델 클래스 구현입니다. Comparableinterface, int CompareTo(Object o) 메소드

를 재정의하고 재정의하세요. ;

모델 클래스: r
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&#39;s comparation depend on types&#39; 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 
}

참고:

1.

배열

의 정렬 방법은 다음과 같습니다.

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 
}

2 한자 정렬의 경우: 더 나은 결과를 얻으려면 icu4j를 사용해 보세요. 특히 성은 일부입니다. 희귀 문자를 사용하는 경우 java.text.Collator를 com.ibm.icu.text.Collator로 바꾸고 java.util.Locale을 com.ibm.icu로 바꾸십시오. util.ULocale3 열거 유형의 경우 enum1 .compareTo(enum2)는 열거 유형 값이 정의된 순서에 따라 비교되며, 알파벳 순서에 따라 비교하는 대신 나중의 값이 더 큽니다. 가치.

위 내용은 Java는 목록 정렬을 위한 기본 및 사용자 정의 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.