宣言されていても動作していない私のインターフェイスクラスのJava Collections.sort()は同等ではここ
public interface Thing {
int getVolume();
}
そしてここでは、シング
Item.java
public class Item implements Thing, Comparable<Thing> {
private String name;
private int volume;
public Item(String name,int volume){
this.name = name;
this.volume = volume;
}
@Override
public int getVolume() {
return this.volume;
}
public String getName(){
return this.name;
}
@Override
public String toString(){
return name+" ("+volume+" dm^3)";
}
// @Override
@Override
public int compareTo(Thing another) {
if(this.getVolume() < another.getVolume()){
return -1;
}
if(this.getVolume() == another.getVolume()){
return 0;
}
else{
return 1;
}
}
}
を実装するクラスです次のコマンドでメインプログラムを実行しようとすると、それは正常に動作します //メインprogram.java
私は事のインタフェースを実装する別のクラスにCollections.sort()を実行しようとするとpublic class Main {
public static void main(String[] args) {
// test your program here
List<Item> items = new ArrayList<Item>();
items.add(new Item("passport", 2));
items.add(new Item("toothbrash", 1));
items.add(new Item("circular saw", 100));
Collections.sort(items);
System.out.println(items);
}
}
はしかし、私はエラーここ
をされ得る事インタフェースを実装し、ボックスクラスIは、実行しようとすると、ストアがListでBoxクラスがThingインターフェイスを実装していて、Item.javaクラスのものと同等のものを定義していてもエラーを返すvoid sort()関数のCollections.sort(store)
Box.java
public class Box implements Thing {
private int maximumCapacity;
private List<Thing> store;
public Box(int maximumCapacity) {
this.maximumCapacity = maximumCapacity;
this.store = new ArrayList<Thing>();
}
public boolean addThing(Thing thing) {
// I.E. if the item added does not make the total volume go to max capacity only
// then add
if (this.getVolume() + thing.getVolume() < this.maximumCapacity) {
store.add(thing);
return true;
}
return false;
}
@Override
public int getVolume() {
// we calculate things of all items in the boxes (current value)
int currentWeight = 0;
for (Thing t : store) {
currentWeight += t.getVolume();
}
return currentWeight;
}
public List<Thing> getStore() {
return store;
}
public int numOfItems(){
return this.store.size();
}
public void sort(){
Collections.sort(store); // *****does not work ****//
}
}
これは、「 sort(List <>)の場合、適切なメソッドが見つかりません。
私の質問は、itemがListとして指定されているmain.javaプログラムで動作できるのですが、なぜここで動作しないのでしょうか? 修正方法?
によって示唆されているようにものcompareTo()メソッドを最適化してみてください。どのようにソートするのか分からないと思いますか? – njzk2