java自然排序代码 排序的java代码

java中treeset定制排序和自然排序的区别

* TreeSet:

隆德网站建设公司创新互联,隆德网站设计制作,有大型网站制作公司丰富经验。已为隆德近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的隆德做网站的公司定做!

* 1.向TreeSet中添加的元素必须是同一个类的。

* 2.可以按照添加进集合中的元素的指定的顺序遍历。像String、包装类等默认按照从小到大的顺序遍历。

* 3.自然排序:当向TreeSet中添加自定义类的对象时,有两种排序方法:①自然排序 ②定制排序

* 4.自然排序:要求自定义类实现java.lang.Comparable接口并重写其compareTo(Object obj)

* 在此方法中,指明按照自定义类的哪个属性来排序。

*

* 5.向TreeSet中添加元素时,首先按照compareTo()进行比较,一旦返回0,虽然仅是两个对象的

* 此属性值相同,但是程序会认为这两个对象是相同的,进而后一个对象就不能添加进来。

*

* compareTo()与hashCode()以及equals()三者保持一致!

*

Java的List怎么排序啊?

用Collections.sort就可以排序,

里面的排序是默认的按自然顺序排列

也就是1,2,3,4这种

参数要求实现了Comparable的数据才能排序,

如果你自己写的类,你就要实现Comparable接口,然后在接口里面自动生成的方法里面

指定排序方法,一般的String Inteneger类都是实现了这个接口的 不用自己操作的。

你可以取看源代码

java字符串通过什么来排序,字符串是怎么比较大小的

答案:java中所有类的排序是根据该类中的toString方法来排序的,你可以通过查看String类的底层代码找到其toString()方法来看他是如何排序的。这是原理

对于单独这个问题:字符串排序时根据字符串第一个字符的按照自然顺序排序

自然顺序:例如如果第一个是数字,则按照从小到大排序,如果第一个字符相同则再比较第二个字符

以此类推,对于字母则根据26个英文字母的顺序决定。

=======================如果是你想问的请给最佳回答,有不懂得可以追问==========谢谢。

java 怎么将List里面数据排序

学生实体类,包含姓名和年龄属性,

比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。

第一种:实体类自己实现比较

(实现comparable接口:public interface ComparableT ,里面就一个方法声明:public int compareTo(T o); )

然后利用List类的sort(Comparator? super E c)方法或java.util.Collections工具类的sort(ListT list) (其实里面就一句:list.sort(null); )进行排序:

结果:

第二种:借助比较器进行排序。

示例代码:

比较器java.util.Comparator类是一个接口(public interface ComparatorT ),包含int compare(T o1, T o2);等方法:

我们的比较器要实现该接口并实现compare方法:

比较的时候可以利用List的sort(Comparator? super E c)方法(或者java.util.Collections工具类的sort(ListT list, Comparator? super T c)方法)进行排序。

结果跟第一种方法一样:

java怎样对集合按照实体类的字段排序

import java.util.Comparator;

import java.util.TreeSet;

/*

* 需求:请按照姓名的长度排序

* TreeSet集合保证元素排序和唯一性的原理

* 唯一性:是根据比较的返回是否是0来决定。

* 排序:

*  A:自然排序(元素具备比较性)

*  让元素所属的类实现自然排序接口 Comparable

*  B:比较器排序(集合具备比较性)

*  让集合的构造方法接收一个比较器接口的子类对象 Comparator

*/

public class TreeSetDemo {

public static void main(String[] args) {

// 创建集合对象

// TreeSetStudent ts = new TreeSetStudent(); //自然排序

// public TreeSet(Comparator comparator) //比较器排序

// TreeSetStudent ts = new TreeSetStudent(new MyComparator());

// 如果一个方法的参数是接口,那么真正要的是接口的实现类的对象

// 而匿名内部类就可以实现这个东西

TreeSetStudent ts = new TreeSetStudent(new ComparatorStudent() {

@Override

public int compare(Student s1, Student s2) {

// 姓名长度

int num = s1.getName().length() - s2.getName().length();

// 姓名内容

int num2 = num == 0 ? s1.getName().compareTo(s2.getName())

: num;

// 年龄

int num3 = num2 == 0 ? s1.getAge() - s2.getAge() : num2;

return num3;

}

});

// 创建元素

Student s1 = new Student("linqingxia", 27);

Student s2 = new Student("zhangguorong", 29);

Student s3 = new Student("wanglihong", 23);

Student s4 = new Student("linqingxia", 27);

Student s5 = new Student("liushishi", 22);

Student s6 = new Student("wuqilong", 40);

Student s7 = new Student("fengqingy", 22);

Student s8 = new Student("linqingxia", 29);

// 添加元素

ts.add(s1);

ts.add(s2);

ts.add(s3);

ts.add(s4);

ts.add(s5);

ts.add(s6);

ts.add(s7);

ts.add(s8);

// 遍历

for (Student s : ts) {

System.out.println(s.getName() + "---" + s.getAge());

}

}

}


本文标题:java自然排序代码 排序的java代码
标题来源:http://azwzsj.com/article/dodpgsi.html