0

そのため、文字列を別のクラスのインスタンス変数と比較しようとしていますが、そのクラスのすべてのオブジェクトに対してこれを行う方法は考えられません。これが発生するメソッドが実行されている場合、インスタンス変数を含むクラスのオブジェクトが 4 つあることは確かです。目標は、ユーザーが私に与えた文字列を比較し、以前に定義されたオブジェクトの文字列と等しい場合は、そのオブジェクトの別のインスタンス変数を変更することです。sudo-code では、次のようになります。

if (colourInput == colourofAnyObjectOfTheClass)
   sizeOfThatObject = sizeInput;
else
   new Object(colourInput, sizeInput);

そして、colorInput と sizeInput が何であるかを以前に定義しました。これをJavaで実装するにはどうすればよいですか?

4

2 に答える 2

1

Strings を比較するときは、演算子ではなくString#equals()メソッドを使用する必要があります==

if (colourofAnyObjectOfTheClass.equals(colourInput)) {
    sizeOfThatObject = sizeInput;
} else {
    new SomeObject(colourInput, sizeInput);
}
于 2013-11-04T13:12:47.563 に答える
0

オブジェクトの作成を管理するクラスであるクラスのインスタンスのある種のリポジトリを作成して、それらを追跡できるようにすることを検討する必要があります。

class MyEntityRepository {
    private List<MyEntity> entities;

    public MyEntity createOrUpdate(String color, Integer size) {
         MyEntity entity = findByColor(color);
         if (entity != null) {
             entity.setSize(size); 
         } else {
             entity = new MyEntity(color, size);
             entities.add(entity);
         }
         return entity;
    } 

    private MyEntity findByColor(String color) { ... }
}  

エンティティが多数ある場合は、何らかのインデックスを作成できます。たとえば、Map<String, MyEntity>キーをエンティティにマップするストアを作成し、それを使用して検索を高速化できます。

于 2013-11-04T13:19:42.267 に答える