我有一些数组:
trade_prices[n]
trade_volumes[n]
trade_dates[n]
trade_tickers[n]
我希望按tickers
排序,然后按dates
排序。
我该如何对它们进行排序?
答案 0 :(得分:8)
好像你应该重新考虑设计。我认为为这些属性创建一个类并拥有类类型的集合更好:
class Trade
{
double price;
double volume;
Date date;
String tickers;
}
然后为Comparator
接口排序实现。创建类后的示例可以是:How to sort by two fields in Java?
如saka1029所述,另一种选择是使用Comparator.comparing
Comparator.thenComparing
和set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
set GH=C:\path\to\Git\2.13
set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH%
来加速类的对象。
答案 1 :(得分:3)
像这样定义内部类Trade
。
int n = 10;
int[] trade_prices = new int[n];
int[] trade_volumes = new int[n];
Date[] trade_dates = new Date[n];
String[] trade_tickers = new String[n];
// fill data...
class Trade {
final int i;
Trade(int i) { this.i = i; }
int price() { return trade_prices[i]; }
int volume() { return trade_volumes[i]; }
Date date() { return trade_dates[i]; }
String ticker() { return trade_tickers[i]; }
}
Trade[] trades = IntStream.range(0, n)
.mapToObj(Trade::new)
.sorted(Comparator.comparing(Trade::ticker).thenComparing(Trade::date))
.toArray(Trade[]::new);
然后您可以将第一个价格排序为trades[0].price()
。
原始数组不会更改。
答案 2 :(得分:0)
创建一个包含构造函数和方法的类,并将数组声明为全局数组。您可以编写一个函数来对数组进行排序。