数组列表 交换方法(ArrayList swap method)

2019-10-18 22:01发布

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

我用Collections.swap(),但我可以使用,即使我的ArrayList中包含属于另一个对象元素的那个方法?

此外,我希望你能看看我写的是布尔值,并返回我的值就知道是否需要的元素交换我的compareTo方法。

在此先感谢...和我的最新的第一个坏后感觉不好意思。

Answer 1:

有没有必要通过实施排序算法推倒重来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 S),你可以实现一个Comparator<Object>和使用instanceof里面留下非Product的项目在结束List

或迭代筛选它仅增加Products到有序的数据结构,如TreeSet<Product> ,提供自己的Comparator<Product>



文章来源: ArrayList swap method