【发布时间】:2015-01-24 22:43:24
【问题描述】:
我有一个 java 列表,我需要在向其中添加对象后对其进行排序。该对象具有三个元素。一个字符串和两个整数。类如下:-
public class ValueWords implements Comparable<ValueWords>{
//.............................................
public static final Comparator<ValueWords> valComparator = new Comparator<ValueWords>()
{@Override
public int compare(ValueWords v1, ValueWords v2) {
return v1.valWord - v2.valWord; }
}
};
//....................................................................
private String strWord;
private int valWord;
private int phraseWord;
public int getPhraseWord() {
return phraseWord;}
public void setPhraseWord(int phraseWord) {
this.phraseWord = phraseWord;}
public String getStrWord() {
return strWord;}
public void setStrWord(String strWord) {
this.strWord = strWord;}
public int getValWord() {
return valWord;}
public void setValWord(int valWord) {
this.valWord = valWord;}
public ValueWords() {}
@Override
public int compareTo(ValueWords arg0) {
// TODO Auto-generated method stub
return 0;}
//..............................................
}
我这样称呼它
Collections.sort(valWordList,ValueWords.valComparator);
它给了我如下排序列表:-
---------------------------------------------
strWord valWord phraseWord
abcd 0 1
abcde 0 0
mns 1 2
efgh 1 1
xyz 2 2
zxx 2 0
--------------------------------------------
我想要一个嵌套排序,例如:-
---------------------------------------------
strWord valWord phraseWord
abcde 0 0
abcd 0 0
efgh 1 1
mns 1 2
zxx 2 0
xyz 2 2
--------------------------------------------
我做了一些徒劳的尝试,但对 java 来说是新手。他们没有工作。而且它们很安静,可以放在这里。
【问题讨论】:
-
不清楚您希望如何对事物进行排序,显然是按 valWord,然后是 phraseWord,然后是 strWord?看起来很简单。
-
先生 valWord 然后是phraseWord。
-
进行第一次比较。如果它们不相等,则完成,返回该比较的结果。如果相等,则返回第二次比较的结果。
标签: java list sorting comparator