C# IEnumerable的Java等价物<;char>;

C# IEnumerable的Java等价物<;char>;,c#,java,translation,C#,Java,Translation,这是我必须转换的C代码: static readonly IEnumerable<char> BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); 静态只读IEnumerable bigaphas=“abcdefghijklmnopqrstuvxyz”.ToCharArray(); 到目前为止,我已经尝试了以下方法: static final Iterable<Character> BigAlphas = "A

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

static readonly IEnumerable<char> BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
静态只读IEnumerable bigaphas=“abcdefghijklmnopqrstuvxyz”.ToCharArray(); 到目前为止,我已经尝试了以下方法:

static final Iterable<Character> BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
static final Iterable bigaphas=“abcdefghijklmnopqrstuvxyz”.toCharArray();
这给了我一个错误:

不兼容类型

必需:java.lang.Iterable

找到:char[]


我知道我遇到了这个错误,因为我试图将
Iterable
设置为
char数组
,但我不确定还能做些什么来翻译它。

简单的字符串行吗

 static final String BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

String实现了CharSequence,这似乎是您所需要的,而且它还有大量的方法来检查成员身份等等。

一个简单的字符串可以工作吗

 static final String BigAlphas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
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");
        }
      };
    }
  };
}
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");
        }
      };
    }
  };
}

这里有一个更通用的形式

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")) {
  /* ... */
}
static final Iterable Iterable(final CharSequence seq){
返回新的Iterable(){
公共最终迭代器迭代器(){
返回新的迭代器(){
私有int游标;
公共布尔hasNext(){
返回游标

这里有一个更通用的形式

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")) {
  /* ... */
}
static final Iterable Iterable(final CharSequence seq){
返回新的Iterable(){
公共最终迭代器迭代器(){
返回新的迭代器(){
私有int游标;
公共布尔hasNext(){
返回游标
好吧,随你的便。。。如果您不介意使用:

Iterable BigAlphas=Chars.asList(“ABCDEFGHIJKLMNOPQRSTUVWXYZ.toCharArray());

好吧,随你的便。。。如果您不介意使用:

Iterable BigAlphas=Chars.asList(“ABCDEFGHIJKLMNOPQRSTUVWXYZ.toCharArray());


也许吧,但我需要直接翻译,所以我还需要
toCharArray()零件。我不会吗?解释一下你为什么需要直接翻译。例如,请参见@Peter's comment why why,这在Java中可能不是一个很好的习惯用法。我需要做一个直接翻译,因为客户现在需要一个用C#编写的程序。IMHO,最好的翻译是使用纯字符串。也许,但我需要做一个直接翻译,所以我还需要
tocharray()零件。我不会吗?解释一下你为什么需要直接翻译。例如,请参见@Peter's comment why why why that may not that great a idiom in Java。我需要做一个直接翻译,因为客户现在需要一个用C#编写的程序。IMHO,最好的翻译是使用纯字符串。你能举个例子说明你想用它做什么吗?在Java中,Iterable是不可重启的,所以将其设为
静态
不太可能有用?对其进行迭代并从中读取值?写信给它?改变它的长度?随机存取?与正则表达式匹配?好吧,这有点复杂,而且我对C完全是新手,但我在C中的功能是:
publicstaticwildcardtype GetWildCardType(charc){switch(C){case'a':return WildCardType.LittleAlpha;}
@PeterLawrey不可重启?一个
Iterable
只为您提供了一个
迭代器,例如用于增强for循环。对不起,我把它读作迭代器。使用Iterable可以工作,但我怀疑这不是一个好主意。也就是说,使用字符串会简单得多。您能举一个例子说明您想用它做什么吗?在Java中,Iterable是not可重新启动,因此使其
静态
不太可能有用。您打算如何处理char[]?迭代它并从中读取值?写入它?更改它的长度?随机访问?匹配正则表达式?嗯,这有点复杂,而且我对C完全是新手,但我在C中的内容是:
public static WildCardType GetWildCardType(char C){switch(C){case'a':return WildCardType.LittleAlpha;}
@PeterLawrey不可重启?一个
Iterable
只为您提供了一个
迭代器,例如用于增强for循环。抱歉,我将其理解为迭代器。使用Iterable可以工作,但我怀疑这不是一个好主意。例如,使用字符串会简单得多。