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>
。