Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按对象方法的值对arraylist排序_Java_Sorting_Arraylist - Fatal编程技术网

Java 按对象方法的值对arraylist排序

Java 按对象方法的值对arraylist排序,java,sorting,arraylist,Java,Sorting,Arraylist,我想根据classBook中方法numPoints()返回的值来整理我的Arraylist bshow()是类Book的一种方法,用于打印代码。 其他一切正常,我认为问题在于方法sort() public class som { private static ArrayList<Book> b; public static void main(String[] args) { b = new ArrayList<Book>(); ... } ... public

我想根据class
Book
中方法
numPoints()
返回的值来整理我的
Arraylist b
show()
是类
Book
的一种方法,用于打印代码。 其他一切正常,我认为问题在于方法
sort()

public class som {
private static ArrayList<Book> b;

public static void main(String[] args) {


b = new ArrayList<Book>();
...
}
...

public static void sort() {
    Book mon = null;
    int indMax = 0;
    for(int i=0; i<b.size()-1; i++){
        mon = b.get(i);
        indMax = i;
        for(int j=i+1; j<b.size(); j++){
            if(b.get(j).numPoints() > mon.numPoints()){
                mon = b.get(j);
            }
        }
        if(indMax != i){
            b.set(indMax, b.get(i));
            b.set(i, mon);
        }

    }
    for(int s=0; s<b.size(); s++) {
        b.get(j).show();
    }
}

class Book {
...
     public double numPoints() {
      ...
     }
     public void show() {
     ...
     }


...
}
公共类som{
私有静态数组列表b;
公共静态void main(字符串[]args){
b=新的ArrayList();
...
}
...
公共静态void排序(){
bookmon=null;
int indMax=0;

对于(inti=0;i来说,您似乎对工作代码感兴趣,而不是从头开始实现排序

只需使用已实现的列表排序方法:

ArrayList<Book> list;
list.sort(Comparator.comparing(Book::numPoints));

它不仅简单,而且易于修改。

您似乎对工作代码感兴趣,而不是从头开始实现排序

只需使用已实现的列表排序方法:

ArrayList<Book> list;
list.sort(Comparator.comparing(Book::numPoints));
它不仅简单,而且易于修改。

For java>=java 8

b.sort((b1,b2)-> b1.numPoints()-b2.numPoints());
对于java
Collections.sort(b,new Comparator<Book>{
            @Override
            public int compare(Book b1, Book b2) {
                return b1.numPoints() - b2.numPoints();
            }
});
Collections.sort(b,新的比较器{
@凌驾
公共整数比较(b1册,b2册){
返回b1.numPoints()-b2.numPoints();
}
});
For java>=java 8

b.sort((b1,b2)-> b1.numPoints()-b2.numPoints());
对于java
Collections.sort(b,new Comparator<Book>{
            @Override
            public int compare(Book b1, Book b2) {
                return b1.numPoints() - b2.numPoints();
            }
});
Collections.sort(b,新的比较器{
@凌驾
公共整数比较(b1册,b2册){
返回b1.numPoints()-b2.numPoints();
}
});

类对象
会让人非常困惑。你应该给类命名为
对象
之外的其他名称。至于列表的排序,请阅读好的,谢谢。我实际上在我的原始代码中给它命名了不同的名称,但因为它不是英文的,所以我为这个问题重命名了它,这样就不会让人困惑了。我猜我是cho使用错误的名称来执行此操作hahai编辑了此问题,因此有一本类书
class Object
,而不是Object,这会让人非常困惑。你应该在
Object
之外给类命名。至于列表的排序,请阅读OK,谢谢。实际上我在我的原始代码中对其进行了不同的命名,但因为不是用英语写的,我为这个问题重新命名了它,这样就不会让人混淆了。我猜我选错了名字。哈哈,我编辑了这个问题,所以没有对象,而是一本教科书