Java Collection.sort()List順序のデフォルト方法とカスタム方法を実現する。
4232 ワード
1.javaが提供するデフォルトリストのソート方法
主要コード:
李明劉布迪劉媛媛媛媛王碩
王碩劉媛媛媛劉迪劉布李明
2.カスタム並べ替え規則:
一つ目はmodel類でComprableインターフェースを実現し、書き換えint compreTo(Object o)方法です。
モデルクラス:
モデルクラス:
1.配列の並べ替え方法は以下の通りです。
comp.ibm.icu.text.C.ollatorをjava.text.C.ollatorに置き換え、comp.ibm.icu.util.ULolocal eをjava.util.Localeに置き換える。
3.エニュメレーションの種類についてのenum 1.com mpare To(enum 2)は、エニュメレート・タイプの値が定義されている時の先着順で比較され、後ほど大きくなります。
値のアルファベット順に比べるのではありません。
以上述べたのは小编でご绍介したJava Collection.sort()の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類でComprableインターフェースを実現し、書き換えint compreTo(Object o)方法です。
モデルクラス:
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
}
二つ目はコンパレータ類がCompratorインターフェースを実現し、int compre(Object o 1,Object o 2)を書き換える方法です。モデルクラス:
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.漢字の並べ替えについて:ICU 4 Jを使ってみてもいい結果が得られます。特に姓がいくつかの見慣れない字の場合、comp.ibm.icu.text.C.ollatorをjava.text.C.ollatorに置き換え、comp.ibm.icu.util.ULolocal eをjava.util.Localeに置き換える。
3.エニュメレーションの種類についてのenum 1.com mpare To(enum 2)は、エニュメレート・タイプの値が定義されている時の先着順で比較され、後ほど大きくなります。
値のアルファベット順に比べるのではありません。
以上述べたのは小编でご绍介したJava Collection.sort()のList顺位を実现するデフォルトの方法とカスタムの方法です。皆さんのために役に立つことを望んでいます。ここでも私たちのサイトを応援してくれてありがとうございます。