Java Arrays
    给一连串数字要排序,可能觉得小case,如果这里有一个图书类别,图书类的成员变量有:书名、价格、作者等等,要求根据图书价格升序排序打印所有图书信息,会怎么做呢?
    咱们可以在图书类里面定义一个compare 方法

    1. int compare(Book book){undefined
    2. return price-book.price
    3. }

    如果返回值大于零 说明调用者的 price 要更大 ,小于零说明方法体里的参数要更大。
    咱们再建一个MyArrays类,定义一个排序方法给咱们的book排序。
    思路有了,下面咱们开始写代码吧,为了达到扩展效果,以便于别人都可以使用,咱们先建一个MyCompareble接口。

    1. public interface MyComparable {
    2. //>0调用者大 <0参数大 ==0一样大
    3. public int compare(Object a);
    4. }

    因为希望所有类都可以实现这个接口并使用其方法,这里参数类型是用了Object,Object是所有类的父类,object对象可以指向任意对象。这里让Book类实现这个接口:

    1. public class Book implements MyComparable{
    2. private String bookName;
    3. private int price;
    4. public Book() {
    5. super();
    6. }
    7. public Book(String bookName, int price) {
    8. super();
    9. this.bookName = bookName;
    10. this.price = price;
    11. }
    12. public String getBookName() {
    13. return bookName;
    14. }
    15. public void setBookName(String bookName) {
    16. this.bookName = bookName;
    17. }
    18. public int getPrice() {
    19. return price;
    20. }
    21. public void setPrice(int price) {
    22. this.price = price;
    23. }
    24. @Override
    25. public String toString() {
    26. return "Book [bookName=" + bookName + ", price=" + price + "]";
    27. }
    28. @Override
    29. public int compare(Object a) {
    30. Book b=(Book)a;
    31. return this.price-b.price;
    32. }
    33. }

    已经实现了MyCompareble接口并重写了 compare方法,再建个MyArrays类,并写好排序方法:

    1. public class MyArrays {
    2. //排序,Object是所有类的父类,object对象可以指向任意对象
    3. public static void sort(Object[] objs){
    4. for(int j=0;j<objs.length-1;j++){
    5. for(int i=objs.length-1;i>j;i--){
    6. MyComparable a=(MyComparable)objs[i];
    7. MyComparable b=(MyComparable)objs[i-1];
    8. if(a.compare(b)<0){
    9. //都能用这段代码
    10. Object temp=objs[i];
    11. objs[i]=objs[i-1];
    12. objs[i-1]=temp;
    13. }
    14. }
    15. }
    16. }
    17. }

    功能已经完善了,来测试下:

    1. public class Demo {
    2. public static void main(String[] args) {
    3. Book[] books=new Book[]{
    4. new Book("C",23),
    5. new Book("Java",109),
    6. new Book("Other",10)
    7. };
    8. MyArrays.sort(books);
    9. display(books);
    10. }
    11. public static void display(Object[] objs){
    12. for(int i=0;i<objs.length;i++){
    13. System.out.println(objs[i]+"");
    14. }
    15. }
    16. }