0

这是我必须转换的 C# 代码:

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

到目前为止,我已经尝试了以下方法:

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

这给了我错误:

不兼容的类型

必需:java.lang.Iterable

找到:字符[]

我知道我收到了这个错误,因为我试图将 an 设置Iterable<Character>为 achar 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 回答