「java排序接口」java直接排序

博主:adminadmin 2022-11-26 00:12:09 56

本篇文章给大家谈谈java排序接口,以及java直接排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java 怎么用compareTo接口实现排序

package test;

public class Field implements ComparableField {

    private String name;

    private int age;

    public Field() {

    }

    public Field(String name, int age) {

        this.name = name;

        this.age = age;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    @Override

    public int compareTo(Field o) {

        // 先按age排序

        if (this.age  o.getAge()) {

            return (this.age - o.getAge());

        }

        if (this.age  o.getAge()) {

            return (this.age - o.getAge());

        }

        // 按name排序

        if (this.name.compareTo(o.getName())  0) {

            return 1;

        }

        if (this.name.compareTo(o.getName())  0) {

            return -1;

        }

        return 0;

    }

}

JAVA comparator接口 字符串数组排序

import java.util.Arrays;

import java.util.Comparator;

public class YuGiOh

{

public static void main ( String[] args )

{

String[] strs = { "qwe", "asfa", "qfwagaa", "rfbu", "a", "hlelllp" };

Arrays.sort (strs, new ComparatorString ()

{

@Override

public int compare ( String o1, String o2 )

{

if (o1.length ()  o2.length ())

{

return 1;

}

else if (o1.length ()  o2.length ())

{

return -1;

}

else

{

return 0;

}

}

});

System.out.println (Arrays.toString(strs));

}

}

java的comparable接口什么意思

1.什么是Comparable接口

此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。 强烈推荐(虽然不是必需的)使自然排序与 equals 一致。所谓与equals一致是指对于类 C 的每一个 e1 和 e2 来说,当且仅当(e1.compareTo((Object)e2) == 0) 与e1.equals((Object)e2) 具有相同的布尔值时,类 C 的自然排序才叫做与 equals 一致 。

2.实现什么方法

int compareTo(T o)

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

强烈推荐 (x.compareTo(y)==0) == (x.equals(y)) 这种做法,但不是 严格要求这样做。一般来说,任何实现 Comparable 接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals 不一致的自然排序。”

参数:

o - 要比较的对象。

返回: 负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。

抛出:

ClassCastException - 如果指定对象的类型不允许它与此对象进行比较。

3.实例

import java.util.*;

public class EmployeeSortTest {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Employee[] staff = new Employee[ 3 ];

staff[ 0 ] = new Employee( "harry Hacker" , 35000 );

staff[ 1 ] = new Employee( "carl cracke" , 75000 );

staff[ 2 ] = new Employee( "tony Tester" , 38000 );

Arrays.sort(staff); //sort方法可以实现对对象数组排序,但是必须实现 Comparable接口

/*Comparable接口原型为:

* public interface ComparableT

* {

* int compareTo(T other);//接口的中方法自动属于public方法

* }

*/

for (Employee e: staff)

System.out.println( "id=" +e.getId()+ " name=" +e.getName()+

".salary=" +e.getSalary());

}

}

/*

* 因为要实现对Employee对象的排序,所以在Employee类中要实现Comparable接口,

* 也就是要实现comepareTo()方法

*/

class Employee implements ComparableEmployee

{

public Employee(String n, double s)

{

name = n;

salary = s;

Random ID = new Random();

id = ID.nextInt( 10000000 );

}

public int getId()

{

return id;

}

public String getName()

{

return name;

}

public double getSalary()

{

return salary;

}

public void raiseSalary( double byPercent)

{

double raise = salary *byPercent/ 100 ;

salary+=raise;

}

public int compareTo(Employee other)

{

if (idother.id) //这里比较的是什么 sort方法实现的就是按照此比较的东西从小到大排列

return - 1 ;

if (idother.id)

return 1 ;

return 0 ;

}

private int id;

private String name;

private double salary;

}

4.与Comparator的区别

Comparator位于包java.util下,而Comparable位于包java.lang下,Comparable接口将比较代码嵌入自身类中,而后者在一个独立的类中实现比较。 如果类的设计师没有考虑到Compare的问题而没有实现Comparable接口,可以通过 Comparator来实现比较算法进行排序,并且为了使用不同的排序标准做准备,比如:升序、降序。

我们看一个Comparator的例子:

import java.util.TreeSet;

import java.util.Comparator;

class NumComparator implements ComparatorNameTag {

public int compare (NameTag left,NameTag right) {

return(left.getNumber() - right.getNumber());

}

}

public class CollectionNine {

public static void main(String arg[]) {

new CollectionNine();

}

CollectionNine() {

NumComparator comparator = new NumComparator();

TreeSetNameTag set = new TreeSetNameTag(comparator);

set.add(new NameTag("Agamemnon",300));

set.add(new NameTag("Cato",400));

set.add(new NameTag("Plato",100));

set.add(new NameTag("Zeno",200));

set.add(new NameTag("Archimedes",500));

for(NameTag tag : set)

System.out.println(tag);

}

}

看不明白欢迎再来询问

用JAVA排序接口实现

日行一善当学习拉。好久没帮人做作业了

首先是接口 compareForNumber.java

public interface compareForNumber {

public int compareTwoNumber(Object obj_1,Object obj_2);

public Object sortTowNumber(Object obj[]);

}

下面是实现接口的具体实现类Test_1.java

public class Test_1 implements compareForNumber{

@Override

public int compareTwoNumber(Object obj_1, Object obj_2) {

int value_1;

int value_2;

try {

value_1 = ((Integer) obj_1).intValue();

value_2 = ((Integer) obj_2).intValue();

if(value_1 value_2)

{

return value_1;

}else if(value_1 value_2)

{

return value_2;

}else if(value_1 == value_2){

return 0;

}

} catch (Exception e) {

System.out.println("你输入不是int类型");

e.printStackTrace();

}

return 0;

}

@Override

public Object sortTowNumber(Object[] obj) {

int maxLength = 0;

String maxValues = "";

int maxLocal = 0;

for(int i =0;iobj.length;i++)

{

try {

String values = String.valueOf(obj[i]);

if(values.length() maxLength)

{

maxLength = values.length();

maxValues = values;

maxLocal = i +1;

}

if(i == obj.length-1)

{

System.out.println("该字符串数组最长是" + maxValues + "长度是" + maxLength + "是数组的第" + maxLocal + "个");

}

} catch (Exception e) {

System.out.println("转型失败你输入可能不是字符串数组");

e.printStackTrace();

}

}

return "该字符串数组最长是" + maxValues + "长度是" + maxLength + "是数组的第" + maxLocal + "个";

}

public static void main(String[] args) {

System.out.println(new Test_1().compareTwoNumber(3, 2));//传入两个数字比较大小

String a[] = {"ni","nihao","woshizuichangde","nihaoa"};//传入字符串数组返回结果

new Test_1().sortTowNumber(a);

}

}

Java编写程序实现Comparator接口,实现字符串按 降序排序怎么弄?

Comparator升序降序实现 int compare(Object o1, Object o2) 返回一个基本类型的整型 1) 如果要按照升序排序, 则o1 小于o2,返回-1(负数),相等返回0,01大于02

java设计排序方法的接口,用顺序表和链表实现

用collection.sort方法:

LinkedListString list = new LinkedListString();

list.add("abc");

list.add("Bcd");

list.add("aAb");

Collections.sort(list, new ComparatorString() {

@Override

public int compare(String o1, String o2) {

return Collator.getInstance().compare(o1, o2);

}

});

关于java排序接口和java直接排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。