0

ユーザー入力を読んでいます。equalsIgnoreCaseユーザー入力にどのように適用するのか疑問に思っていましたか?

 ArrayList<String> aListColors = new ArrayList<String>();
    aListColors.add("Red");
    aListColors.add("Green");
    aListColors.add("Blue");

 InputStreamReader istream = new InputStreamReader(System.in) ;
 BufferedReader bufRead = new BufferedReader(istream) ;
 String rem = bufRead.readLine();  // the user can enter 'red' instead of 'Red'
 aListColors.remove(rem);  //equalsIgnoreCase or other procedure to match and remove.
4

5 に答える 5

2

が必要ない場合は、大文字と小文字を区別しないコンパレータで初期化をList使用できます。Set

Set<String> colors = 
      new TreeSet<String>(new Comparator<String>()
          { 
            public int compare(String value1, String value2)
            {
              // this throw an exception if value1 is null!
              return value1.compareToIgnoreCase(value2);
            }
          });

colors.add("Red");
colors.add("Green");
colors.add("Blue");

これで、remove を呼び出すときに、引数の大文字と小文字は関係なくなりました。したがって、次の行の両方が機能します。

colors.remove("RED");

また

colors.remove("Red");

Listただし、これは、インターフェイスが提供する順序が必要ない場合にのみ機能します。

于 2011-03-27T10:02:35.177 に答える
0

equalsIgnoreCase は String クラスのメソッドです。

試す

someString.equalsIgnoreCase(bufRead.readLine());
于 2011-03-27T09:44:35.163 に答える
0

ケースを無視したい場合は、取得時にそれを行うことはできません。

代わりに、リストに入れるときに、すべて大文字またはすべて小文字に移動する必要があります。

ArrayList<String> aListColors = new ArrayList<String>();
aListColors.add("Red".toUpperCase());
aListColors.add("Green".toUpperCase());
aListColors.add("Blue".toUpperCase());

その後、後で行うことができます

aListColors.remove(rem.toUpperCase());
于 2011-03-27T09:50:41.803 に答える
0

ArrayList.remove メソッドは equalsIgnoreCase の代わりに equals を使用するため、自分でリストを反復処理する必要があります。

Iterator<String> iter = aListColors.iterator();
while(iter.hasNext()){
     if(iter.next().equalsIgnoreCase(rem))
     {
        iter.remove();
        break;
     }
}
于 2011-03-27T09:54:57.773 に答える
0

コレクションのメソッド remove は equals() の要素を削除するために実装されているため、"Red".equals("red") は false であり、リストに equalsIgnoreCase を持つメソッドが見つかりません。これは文字列に対してのみ意味があるため、独自のクラスを作成して equals メソッドを追加できます-あなたに等しいものは何ですか

class Person {
    String name;
    // getter, constructor
    @Override
    public boolean equals(Object obj) {
        return (obj instanceof Person && ((Person)obj).getName().equalsIgnoreCase(name));
    }
}

public class MyHelloWorld {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<Person>();
        list.add(new Person("Red"));
        list.remove(new Person("red"));
    }
}

または、オーバーライド equals のないソリューション: リストを反復処理し、equalsIgnoreCase の方法で「赤」を見つけるメソッドを記述します。

于 2011-03-27T10:19:25.003 に答える