0

これは、変換する必要がある C# コードです。

static readonly IEnumerable<char> BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();

これまでのところ、次のことを試しました。

static final Iterable<Character> BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();

これは私にエラーを与えます:

互換性のないタイプ

必須: java.lang.Iterable

見つかった: char[]

を に設定しようとしているためにこのエラーが発生することはわかってIterable<Character>char arrayますが、それを変換するために他に何ができるかわかりません。

4

3 に答える 3

2

単純な文字列は機能しますか?

 static final String BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

String は CharSequence を実装しており、これは必要と思われるものであり、メンバーシップなどをチェックするためのメソッドもたくさんあります。

于 2012-09-10T11:49:29.010 に答える
1
static final Iterable<Character> alphabet() {
  return new Iterable<Character>() {

    public final Iterator<Character> iterator() {
      return new Iterator<Character>() {

        private char cursor = 'A';

        public boolean hasNext() {
          return cursor <= 'Z';
        }

        public Character next() {
          return cursor++;
        }

        public void remove() {
          throw new UnsupportedOperationException("cannot remove from stream");
        }
      };
    }
  };
}

使用法:

for (final char ch : alphabet()) {
  /* ch in interval [A,Z] */
}

これがより一般的な形式です。

static final Iterable<Character> iterable(final CharSequence seq) {
  return new Iterable<Character>() {

    public final Iterator<Character> iterator() {
      return new Iterator<Character>() {

        private int cursor;

        public boolean hasNext() {
          return cursor < seq.length();
        }

        public Character next() {
          return seq.charAt(cursor++);
        }

        public void remove() {
          throw new UnsupportedOperationException("cannot remove from stream");
        }
      };
    }
  };
}
/* ... */
for (final char ch : iterable("qwertyuiop")) {
  /* ... */
}
于 2012-09-10T11:52:49.040 に答える
0

まあ、それはあなたのやり方です... Guavaの使用を気にしない場合:

Iterable<Character> BigAlphas = Chars.asList("ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray());
于 2012-09-10T12:18:28.937 に答える