![](/img/trans.png)
[英]Comparator for sorting by frequency without Creating a Comparator implementation class
[英]Using comparator without adding class
我正在嘗試按字符串長度對arraylist進行排序,我知道實現Comparator,但是我想知道是否可以在我的函數中完成此操作,而無需添加任何額外的類或方法? 理想情況下,我想將它們輸出的最短到最長,但是我可以做到!
這是我想用來實現比較器的方法的摘要。
public static void sCompare(BufferedReader r, PrintWriter w) throws IOException {
ArrayList<String> s= new ArrayList<String>();
String line;
int n = 0;
while ((line = r.readLine()) != null) {
s.add(line);
n++;
}
//Collections.sort(s);
Iterator<String> i = s.iterator();
while (i.hasNext()) {
w.println(i.next());
}
}
預先感謝您的任何投入!
我看不到實現Comparator
接口有什么問題。 如果您唯一關心的是執行函數中的所有操作,則可以使用匿名實現。 類似於以下內容:
Collections.sort(s, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
(這將替換您當前的行//Collections.sort(s);
)
PS:您永遠不會使用n
的值。
PPS:您可能必須根據return
語句中想要的順序來反轉o1和o2。
用匿名類實現接口的另一個示例
我將假設“類”的意思是“頂級類”,從而允許使用匿名類 :
Collections.sort(s, new Comparator<String>() {
public int compare(String a, String b) {
// java 1.7:
return Integer.compare(a.length(), b.length());
// java 1.6
return a.length() - b.length();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.