我有一个包含Quote对象的数组列表。我希望能够按名称,更改和更改百分比的字母顺序进行排序。如何排序我的数组列表?
package org.stocktwits.model; import java.io.Serializable; import java.text.DecimalFormat; public class Quote implements Serializable { private static final long serialVersionUID = 1L; public String symbol; public String name; public String change; public String percentChange; public String open; public String daysHigh; public String daysLow; public String dividendYield; public String volume; public String averageDailyVolume; public String peRatio; public String marketCapitalization; public String yearHigh; public String yearLow; public String lastTradePriceOnly; public DecimalFormat df = new DecimalFormat("#,###,###,###,###,##0.00"); public DecimalFormat vf = new DecimalFormat("#,###,###,###,###,##0"); public String getSymbol() { return symbol; } public void setSymbol(String symbol) { this.symbol = symbol; } public String getName() { return name; }
创建一个合适的对象Comparator,它将根据你所需的条件比较两个项目。然后Collections.sort()在你的ArrayList上使用 。
Comparator
Collections.sort()
ArrayList
如果以后要按其他条件排序,请Collections.sort()使用不同的再次调用Comparator。
如果你(几乎)总是想要使用该顺序,则可以将Comparable接口添加到Quote并实现compareTo方法。
public int compareTo(Quote quote) { int result = this.getName().compareTo(quote.getName()); if (result == 0) { result = this.getChange().compareTo(quote.getChange()); } if (result == 0) { result = this.getPercentChange().compareTo(quote.getPercentChange()); } return result; }
然后使用排序的集合或列表进行排序,引号将被排序。
对于临时排序,最好使用单独的(可能是匿名的)Comparator。