私はユーザー定義クラスのソートセットを実装しており、compareToメソッドをComparableインターフェイスのユーザー定義クラスに実装しています。今では私の要件は、文字(つまり〜z)がすでに存在している場合で、文字の頻度を増やし、他の方法ではその頻度に応じて入力を並べ替えます。ソート済みセットとの混乱Java
String s = "abc"; // or "aaaab" or any set of string between [ a - z ]
SortedSet<FreequencyIndex> sortedSet = new TreeSet<FreequencyIndex>();
FreequencyIndex symbol;
for(int index = s.length() - 1; index >=0 ; index--){
symbol = new FreequencyIndex(s.charAt(index), index, 0);
sortedSet.add(symbol);
}
System.out.println(sortedSet);
ユーザ定義のクラス:Sは= "" 入力の
class FreequencyIndex implements Comparable<FreequencyIndex>{
char symbol;
int index;
int frequency;
public FreequencyIndex(char newSymbol, int newIndex, int newFrequency){
this.symbol = newSymbol;
this.index = newIndex;
this.frequency = newFrequency;
}
@Override
public String toString(){
return this.symbol + " "+ this.frequency;
}
@Override
public int compareTo(FreequencyIndex f2){
if(this.symbol == f2.symbol){
f2.frequency++;
return 0;
}
else
if(this.frequency > f2.frequency)
return 1;
else
return -1;
}
}
- - >ソートセットは以下のようになり[0]は、それが与えている[1]
- について入力S = "ab" - >ソートされた集合は[a 0、b 0]であるが、[a 0、b 1]を与える。
- 入力S = "aba" 、a 2]を与えるが、[b 0、a 2]を与える。
- 入力S = "aab" - >ソートされたセットは[b 0、a 2]ですが、[a 1、b 1]を与えています
私はここで何か説明できますか?
私は 'compareTo'が副作用を持っているべきではないと確信しています。 – Eran
何とは? sの定義/初期化は含まれていません。 – Tschallacka
は、異なる文字セットの文字列です。例:s = "aab"または "babcz"何か。 –