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方法,它是布尔值,并向我返回一个值,以了解是否需要交换元素。在此先感谢...并对我最近的第一篇不良文章感到抱歉。 最佳答案 无需通过使用swap()实现排序算法来重新发明轮子。 Collections已经使用了mergesort的良好实现提供了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添加到有序数据结构(例如Products)并提供您自己的TreeSet<Product>的同时迭代对其进行过滤。关于java - ArrayList <class>交换方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19765243/
10-10 02:36