Java 通过iterable字符串(番石榴)获取元素

Java 通过iterable字符串(番石榴)获取元素,java,string,guava,Java,String,Guava,我有一个可编辑的字符串(番石榴库)。如何从中获取元素。这是我的密码: public static String hillcipher(String str) { String hillcipher=""; Iterable<String> pieces = null; for (int i=0; i<=str.length()-1; i++){ char c = str.charAt(i); if (Character.i

我有一个可编辑的字符串(番石榴库)。如何从中获取元素。这是我的密码:

public static String hillcipher(String str)
{
    String hillcipher="";
    Iterable<String> pieces = null;
    for (int i=0; i<=str.length()-1; i++){
        char c = str.charAt(i);
        if (Character.isLetter(c)){
            pieces = Splitter.fixedLength(2).split(str);
        }
    }
    System.out.println(pieces);
    return hillcipher;
publicstaticstringhillcipher(stringstr)
{
字符串hillcipher=“”;
Iterable片段=空;

对于(int i=0;i,有多种方法可以从iterable中获取元素:

  • 迭代每个元素:

    for (String piece : pieces) {
        // do something
    }
    

    等等


但是,如果您想像访问列表一样简单地访问元素,则可以使用列表。它与
Splitter.split(CharSequence)相同
但它不是返回一个潜在的惰性的
Iterable
而是返回一个填充的
不可变列表
,该列表支持对其元素的随机访问。

这段代码应该做什么?在这里,我将一个字符串拆分为两个字符。例如,“java”将被拆分为“ja”、“va”.但是我想把每个字符分开,只是为了对它们进行其他计算。你不会把一个字符串分成几段。或者更确切地说,你正在这样做,但是每次你遇到字符串中的一个字母时你都在这样做。你想实现什么?我是这样做的。我运行命令,它就工作了。这不是整个程序都是一个类。最后,我我将开发一个希尔密码函数如果你想分别得到每个字符,那么为什么不使用每个字符的结果呢?为什么不进行拆分呢?
Iterator<String> iterator = pieces.iterator();
while (iterator.hasNext()) {
    String piece = iterator.next();
    // do something
}
Iterator<String> iterator = pieces.iterator();
if (iterator.hasNext()) {
    String firstPiece = iterator.next();
    // do something
    if (iterator.hasNext()) {
        String secondPiece = iterator.next();
        // do something else
        // etc.
    }
}
String thirdPiece = Iterables.get(pieces, 2);
String lastPieceOrEmpty = Iterables.getLast(pieces, "");