「java排序接口」java直接排序
本篇文章给大家谈谈java排序接口,以及java直接排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java 怎么用compareTo接口实现排序
- 2、JAVA comparator接口 字符串数组排序
- 3、java的comparable接口什么意思
- 4、用JAVA排序接口实现
- 5、Java编写程序实现Comparator接口,实现字符串按 降序排序怎么弄?
- 6、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直接排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。