1
  public void sortDatabase(){
        for(int j=0;j<productDatabase.size()-1;j++){
        for(int i =0;i<productDatabase.size()-j-1;i++){
    if(compareTo(i)){
        Collections.swap(productDatabase,i,i++ );  //Με την Χρήση της Collections βιβλιοθήκης κάνω SWAP! Πρέπει να βάλω την βιβλιοθήκη όμως!

    }


    }
    }
}

public boolean compareTo(int index){

    if(productDatabase.get(index).getPrice() > productDatabase.get(index++).getPrice()){
        return true;
    }
    else
        return false;



}

上次我以非常糟糕的方式发布了我的答案。对不起我的英语真的很烂,但这是我的问题。我已经声明了一个 ArrayList<class of Product> productDatabase。产品类中有一些字段。主要问题是我无法对我的 productDatabase 元素进行排序。

我使用 Collections.swap() 但即使我的 ArrayList 包含另一个对象的元素,我也可以使用该方法吗?

另外,我希望您看看我编写的 compareTo 方法,该方法是布尔值,并返回一个值以了解是否需要交换元素。

在此先感谢......并为我最近的第一篇糟糕的帖子感到抱歉。

4

1 回答 1

0

无需重新发明轮子,使用swap(). Collections已经提供了sort()一种使用合并排序的好实现的方法。

实现 aComparator<Product>并使用根据自定义比较标准进行Collections.sort(List<T>, Comparator<T>)排序。List

Comparator<Product> PRICE_COMPARATOR = new Comparator<Product>() { 
    @Override
    public int compare(Product o1, Product o2) {
        // Check for nulls if necessary
        return o1.getPrice().compareTo(o2.getPrice());
    }
}

List<Product> sortedList = Collections.sort(unsortedList, PRICE_COMPARATOR);

如果您List不是 a List<Product>,而是 a List<Object>(它可能包含不是Products 的项目),您可以实现 aComparator<Object>instanceof在其中使用以将非Product项目留在List.

或者迭代过滤它,同时只添加Products到一个有序的数据结构,比如 a TreeSet<Product>,提供你自己的Comparator<Product>.

于 2013-11-04T10:11:28.043 回答