简体   繁体   English

等效于IEnumerable的Java <char>

[英]Java Equivalent of IEnumerable<char>

This is the C# code that I have to convert: 这是我必须转换的C#代码:

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

So far I've tried the following: 到目前为止,我已经尝试了以下方法:

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

This gives me the error: 这给了我错误:

incompatible types 不兼容的类型

required: java.lang.Iterable 必需:java.lang.Iterable

found: char[] 找到:char []

I know I'm getting this error because I'm trying to set an Iterable<Character> to a char array but I'm not sure what else can be done to translate it. 我知道我收到此错误,因为我正在尝试将Iterable<Character>设置为char array但是我不确定还可以做什么来对其进行转换。

Would a simple String work? 简单的String可以工作吗?

 static final String BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

String implements CharSequence, which seems to be what you need, and it also has loads of methods to check membership and such. String实现了CharSequence,这似乎是您所需要的,并且它还包含许多方法来检查成员资格等。

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");
        }
      };
    }
  };
}

Usage: 用法:

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

Here's a more generic form. 这是一种更通用的形式。

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")) {
  /* ... */
}

好吧, 随心所欲 ...如果您不介意使用Guava

Iterable<Character> BigAlphas = Chars.asList("ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM