- 对象数组排序
public class Test02 {
public static void main(String[] args) {
Dragon[] dragens={
new Dragon(1,"西米郭",14,"龙变身"),
new Dragon(2,"是巴拉古",30,"十字斩"),
new Dragon(3,"瓦塔诺",16,"登龙剑")
};
Arrays.sort(dragens);
for (Dragon d:dragens) {
System.out.println(d);
}
}
}
class Dragon implements Comparable{
private int id;
private String name;
private int age;
private String skill;
Dragon(){}
public Dragon(int id, String name, int age, String skill) {
this.id = id;
this.name = name;
this.age = age;
this.skill = skill;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
@Override
public int compareTo(Object o) {
//向下转型
Dragon dragon=(Dragon)o;
//我和别人比(我:this;别人:Object o)
if (this.getAge()<dragon.getAge()){
return -1; //我比她小
}
if(this.getAge()>dragon.getAge()){
return 1; //我比她大
}
return 0; //我俩一样大
}
@Override
public String toString() {
return "Dragon{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", skill='" + skill + '\'' +
'}';
}
}
-
算法可视化参考
https://visualgo.net/en

-
冒泡排序(带稳定排序示意——编号内外都要递增)
public class BubbleSort {
public static void main(String[] args) {
int[] a=new int[15];
int[] b=new int[15];
for (int i = 0; i <a.length ; i++) {
a[i]=(int)(Math.random()*14+1);
b[i]=i;
System.out.print(a[i]+"("+b[i]+")"+"\t");
}
System.out.println();
bubbleSort(a,b); //传址
for (int i = 0; i <a.length ; i++) {
System.out.print(a[i]+"("+b[i]+")"+"\t");
}
}
public static void bubbleSort(int[] a,int[] b){
boolean isSwap=true;
for (int i = 0; i <a.length && isSwap ; i++) {
isSwap=false;
for (int j = 0; j <a.length-1-i ; j++) {
if (a[j]>a[j+1]){
int tmp1,tmp2;
tmp1=a[j+1]; tmp2=b[j+1];
a[j+1]=a[j]; b[j+1]=b[j];
a[j]=tmp1; b[j]=tmp2;
isSwap=true;
}
}
}
}
}
- try-with-resource
try(FileReader reader=new FileReader("d:/tmp.txt");){
char c=(char)reader.read();
char c2=(char)reader.read();
System.out.println(""+c+c2);
}catch(Exception e){
e.printStackTrace();
}
JDK7之后新增了try-with-resource。它可以自动关闭实现了AutoClosable接口的类。实现类需要实现close()方法。try-with-resource将try-catch-finally简化为try-catch,这其实是一种语法糖,编译时会自动转化为try-catch-finally语句。
本文介绍了一种使用Java实现的对象数组排序方法,通过实现Comparable接口并重写compareTo方法来比较对象属性,同时展示了冒泡排序算法的具体实现,包括稳定排序的处理方式。
413





