8

カスタムオブジェクトのArrayListでCollections.sortを使用しようとしていますが、警告が表示され、理由がわかりません。

Warning: Type safety: Unchecked invocation 
sort(ArrayList<CharProfile>) of the generic method sort(List<T>) 
of type Collections

このコードで:

ArrayList<CharProfile> charOccurrences = new ArrayList<CharProfile>();

...

Collections.sort(charOccurrences);

そして、これが私の方法です:

public class CharProfile implements Comparable {

...

@Override
public int compareTo(Object o) {

        if (this.probability == ((CharProfile)o).getProbability()) {
            return 0;
        }
        else if (this.probability > ((CharProfile)o).getProbability()) {
            return 1;
        }
        else {
            return -1;
        }
 }
}
4

3 に答える 3

28

同等のものは型安全性で実装されるべきです、ここにあり<CharProfile>ます。

public class CharProfile implements Comparable<CharProfile>{
       @Override
       public int compareTo(CharProfile cp) {
       ...
       }
}
于 2012-10-29T13:39:08.120 に答える
1

ジェネリックスを使用しているので、メソッドに渡す型を。のCharProfile代わりに作成しObjectます。

また、確率が2倍になる場合に備えて、図のように比較を再配置することをお勧めします。

@Override
public int compareTo(CharProfile o) {

        if (this.probability < o.getProbability()) {
            return -1;
        }
        else if (this.probability > o.getProbability()) {
            return 1;
        }
        else {
            return 0;
        }
}
于 2012-10-29T13:38:34.653 に答える
-2

すでに答えていることに気づきましたが、とにかくここに私の入力があります:)

import java.util.ArrayList;
import java.util.List;
import java.util.Collections;

public class CharProfile implements Comparable <CharProfile>{
  public void doStuff(){
    List<CharProfile> charOccurrences = new ArrayList<CharProfile>();
    Collections.sort(charOccurrences);
  }
  @Override
  public int compareTo(CharProfile o) {
    return -1;
  }
}
于 2012-10-29T13:53:54.270 に答える