Arrays.sort(a) 自定义排序
Arrays.sort(a) 自定义排序,(需实现接口:Comparable)
package com.hd;
import java.util.Arrays;
class Person implements Comparable{
int id ;
int score ;
public Person(int id,int score){
this.id = id;
this.score = score ;
}
@Override
public String toString(){
return "id:"+id+" score:"+score ;
}
@Override
public int compareTo(Object o) {
Person p = (Person)o ;
int temp ;
temp= this.score > p.score ? 1:this.score==p.score?0:-1;
if(temp==0)
return this.id >p.id? 1:-1;
return temp ;
}
}
public class Main
{
public static void main(String args[])
{
Person p[]={new Person(9,80),
new Person(8,90),
new Person(8,70)};
Arrays.sort(p);
System.out.println(Arrays.toString(p));
}
}
//---------[id:8 score:70, id:9 score:80, id:8 score:90]
1. sort():
Arrays.sort(Object[] a) --> Arrays.mergeSort()
--->((Comparable) dest[j-1]).compareTo(dest[j])>0
Comparable转换是为了调用compareTo()
虽不在编译的时候报错,但如果没实现的话,
运行时会:ClassCastException*,
2. toString():
Arrays.toString(Object[] a)
let the string of array append :[ .... ]
---->include:String.valueOf(Object a)
----->include:Object.toString()
--< self implement
(overwrite the method of super class,Object)
impelment person.toString();
3. 导包:
为什么在Arrays中可以未经导包,自由出现Comparable接口,
java.lang包是核心类库,它包含了运行java程序必不可少的系统类,
系统自动为程序引入java.lang包中的类
(如:System Math String)因此不需要再import引入;
-----------------------------------------------
4.继承:
(1)构造:
子类的构造方法在创建一个子类的对象时,总是先调用父类的某个构造方法,
如无指出,则是无参数的那个;
因此,在子类创建对象时,不仅子类中声明的成员变量被分配了内存,
而且父类中的成员变量也被分配了内存,
看似浪费 ,但是注意,子类中还有一部分中的方法时从父类继承的
这部分方法却可以操作这部分未继承的private成员;
(2)重写类型
jdk1.5后,允许重写方法的类型可以是父类方法的子类型,即不必完全一致,
也就是说如果父类方法中的类型是类,则重写方法中可以是子类,
(3)上转型
对象的上转型对象:(前提是 B extends A )
A a ;
a = new B() ;
但是上转型对象会失去原对象的一些属性,
1,。不能操作子类新增的属性;
2. 继承的或重写的,
因为在Object 中没有实现,
5.接口:
不能自己new对象,
只能得到所实现的类的引用,然后使用所实现的方法,接口回调;
Arrays.sort(a) 自定义排序的更多相关文章
- [LeetCode] Custom Sort String 自定义排序的字符串
S and T are strings composed of lowercase letters. In S, no letter occurs more than once. S was sort ...
- [leetcode]791. Custom Sort String自定义排序字符串
S and T are strings composed of lowercase letters. In S, no letter occurs more than once. S was sort ...
- 5.4 集合的排序(Java学习笔记)(Collections.sort(),及Arrays.sort()底层分析)
1.Comparable接口 这个接口顾名思义就是用于排序的,如果要对某些对象进行排序,那么该对象所在的类必须实现 Comparabld接口.Comparable接口只有一个方法CompareTo() ...
- C# - List.Sort()自定义排序方法
本文通过示例介绍了C#中典型容器List.Sort()的自定义排序方法,进而引出了C#中自定义排序的核心接口及方法 项目地址:自定义Sort方法 - SouthBegonia's Github Lis ...
- Java8 Collections.sort()及Arrays.sort()中Lambda表达式及增强版Comparator的使用
摘要:本文主要介绍Java8 中Arrays.sort()及Collections.sort()中Lambda表达式及增强版Comparator的使用. 不废话直接上代码 import com.goo ...
- Arrays.sort解析
Arrays.sort()解读 在学习了排序算法之后, 再来看看 Java 源码中的, Arrays.sort() 方法对于排序的实现. 都是对基本数据类型的排序实现, 下面来看看这段代码: Arra ...
- 集合(一)-Java中Arrays.sort()自定义数组的升序和降序排序
默认升序 package peng; import java.util.Arrays; public class Testexample { public static void main(Stri ...
- java.util.Arrays.sort两种方式的排序(及文件读写练习)
import java.io.*; import java.util.*; public class SortTest{ public static void main(String args[]) ...
- 31、Arrays数组排序(续)——自定义排序
自定义的类要按照一定的方式进行排序,比如一个Person类要按照年龄进行从小到大排序,比如一个Student类要按照成绩进行由高到低排序. 这里我们采用两种方式,一种是使用Comparable接口:让 ...
随机推荐
- 网络流24题-最长k可重线段集问题
最长k可重线段集问题 时空限制1000ms / 128MB 题目描述 给定平面 x−O−y 上 n 个开线段组成的集合 I,和一个正整数 k .试设计一个算法,从开线段集合 I 中选取出开线段集合 S ...
- 【CF1017B】The Bits(模拟)
题意:给定两个二进制数字a,b,可以任意交换a中的两个bit位,求进行这样一次操作,最多可产生多少种不同的a or b n<=1e5 思路:模拟,分类讨论 #include<cstdio& ...
- 【Codevs1034】家园(最大流,裂点)
题意:由于人类对自然的疯狂破坏,人们意识到在大约2300年之后,地球不能再居住了,于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177年冬由于未知的原因,地球环境发生了连锁崩溃,人 ...
- 【CF679B】Theseus and labyrinth(数学,贪心)
题意: 给一个m<=10^15,每次都减最接近当前值的立方数 让你找一个不大于m的最大的数并且这个数是减法次数最多的数 思路:见http://blog.csdn.net/miracle_ma/a ...
- 定位 UNIX 上常见问题的经验总结
本文主要对 UNIX 平台常见的问题进行了分类,介绍一些常见问题分析时使用的方法和命令,对以下三种常见问题的分析方法做了简单介绍:UNIX 下 Crash 问题的分析方法.UNIX 下内存泄露问题的分 ...
- Office文件上传自动生成缩略图-C#开发
原文: http://www.knowsky.com/898407.html 上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给 ...
- Tomcat是怎么工作的(1) -- 开篇
这是一个系列文章的第一篇. 标题还是费了点脑子才确定的,起什么名字比较好呢.Tomcat工作原理?深入浅出Tomcat运行机制?从零开始研究Tomcat?Tomcat是怎么运行起来的?Tomcat是如 ...
- Python Challenge 第一关
偶然在网上看到这个,PYTHON CHALLENGE,利用Python语言闯关,觉得挺有意思,就记录一下. 第0关应该算个入口吧,试了好几次才试出来,没什么代码就不写了.计算一个结果出来就行. 第一关 ...
- Android内存泄漏总结
内存泄漏问题老生常谈,很常见也很难根治,今天我在这里总结一下内存泄漏的原因和解决方法: 所谓内存泄漏,就是本该被回收的对象,由于某些原因不能被回收,继续占用堆内存的这种状态,导致的结果也是显而易见的, ...
- HOJ - 2715最小费用流
国庆八天乐,刷题也快乐. HOJ崩了,但是VJ可以把题目挂出来. 题目链接:https://vjudge.net/contest/188441#problem/A 涉及到矩阵里面的网络流,化为图来做. ...