java基础之Arrays类和比较器
来源:互联网 发布:centos 安装openjdk 编辑:程序博客网 时间:2024/06/10 19:32
Arrays类是一个对数组进行操作的类,我们常使用的方法有Arrays.sort();进行升序排序,Arrays.toString(arr);用于返回指定数组的字符串表示形式
范例:
public class Demo1 { public static void main(String[] args) { int[] arr = {8,7,9,0,10,88,99,11,55,66,22,1,2}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); }}
结果:
[0, 1, 2, 7, 8, 9, 10, 11, 22, 55, 66, 88, 99]
但是我们查看api在Arrays类中有一个这样的Sort方法
可以对一个对象数组进行排序,那么我们进来对对象数组进行排序
范例:
class Person{ private String name; private int age; public Person() { } public Person(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; } //Overide toString() to convenient to output public String toString() { return "Person [name=" + name + ", age=" + age + "]"; }}
public class Demo1 { public static void main(String[] args) { Person[] person = { new Person("Lar",23), new Person("mike",25), new Person("jerry",18), new Person("trico",16) }; Arrays.sort(person); for (int i = 0; i < person.length; i++) { System.out.println(person[i]); } }}
结果:
此时提示的是一个类转换异常:Person类不能向Comparable转换。
当需要对一组对象进行排序的时候,一定要指定比较规则,这种比较规则主要是将某一个类的某个属性。这就需要java中的比较器进行实现。
对于比较器的实现java中有两种接口完成:
Comparable
Comparator
我们这里只介绍使用广泛的Comparable接口。
首先来看下接口的定义:
public interface Comparable<T>{ public int compareTo(T o) ;}
Comparable接口中只存在一个方法,此方法是为了编写比较规则的,方法的返回值是一个int类型,此值只会返回三个结果(等于0,小于0,大于0)。
要想实现对象数组的排序,我们就要实现Comparable接口
范例:
class Person implements Comparable<Person>{ private String name; private int age; public Person() { } public Person(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; } //Overide toString() to convenient to output public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } //wirte rules @Override public int compareTo(Person o) { int num = this.age - o.age; if(num==0) return this.name.compareTo(o.name); return num; }}
public class Demo1 { public static void main(String[] args) { Person[] person = { new Person("Lar",23), new Person("mike",25), new Person("jerry",18), new Person("trico",16), new Person("marry",16) }; Arrays.sort(person); for (int i = 0; i < person.length; i++) { System.out.println(person[i]); } }}
以上方法comparableTo方法的比较规则是,大条件先按照年龄排序,小条件再按照姓名排序
结果:
Person [name=marry, age=16]Person [name=trico, age=16]Person [name=jerry, age=18]Person [name=Lar, age=23]Person [name=mike, age=25]
总结:
如果对象数组要排序,那么对象所在的类必须实现Comparable接口
0 0
- java基础之Arrays类和比较器
- Java 用Arrays.sort()对对象数组排序之comparable接口和comparator比较器
- Java基础之Arrays工作
- 黑马程序员 Java基础之Arrays工具类
- Java基础之比较器 Comparable和Comparator
- Java基础回顾 : Arrays类和Comparator接口
- Java常用类库--Arrays、比较器(comparable、Comparator)
- 比较器(一)Arrays类
- Java基础之Arrays的用法总结
- 黑马程序员----------Java基础------------Collections和Arrays
- 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换
- java中compareTo和compare方法之比较 | Java基础
- Java数组和Arrays类
- JavaScript基础之Arrays
- java基础<Collections-Arrays工具类>
- Java基础-----Collections与Arrays工具类
- java基础复习-工具类Arrays
- java基础入门----Arrays
- 【2017/4/9】 centos6.5下安装oracle11.2.0.4软件
- windows下python GUI开发环境的搭建
- NumPy 上手一个例子 vectorsum.py
- 利用Python进行数据分析--数据聚合与分组运算
- Shell 命令--文件创建、搜索命令--总结自《Linux Shell 脚本攻略》
- java基础之Arrays类和比较器
- PyJWT翻译
- Centos 6.9 iptables 开启端口 5050,5151 等
- Web.xml配置详解之context-param
- Shell .sh,for, if, 变量的使用
- 深入理解HTTP协议
- Unity3D 从入门到放弃(五)----射箭游戏
- mysql和postgres数据库性能比较
- 打破外网插件,ngrok的使用