数组列表<class>交换方法


  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 <类的产品>产品数据库。 产品类中有一些字段。主要问题是我无法对我的产品进行排序数据库元素。

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

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

提前感谢...并为我最新的第一篇糟糕帖子感到抱歉。

没有必要通过使用swap()实现排序算法来重新发明轮子。 Collections已经提供了一个使用合并排序的良好实现的sort()方法。

实现Comparator<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不是List<Product>,而是List<Object>(它可能包含不Product的项目),则可以实现一个Comparator<Object>并在其中使用instanceof将非Product项保留在List末尾。

或者迭代过滤它,同时只向有序数据结构(如TreeSet<Product>)添加Products,提供您自己的Comparator<Product>

相关内容

  • 没有找到相关文章

最新更新