在java中从字符串中读取字符的最佳和最有效的方法是什么

时间:2015-10-09 07:15:19

标签: java string chars

我想知道读取不影响程序内存和性能的字符串的有效方法。

我有以下实施方式:

String x = "<BigBus><color>RED</color><number>123</number>........</BigBus>";
    char[] xh = new char[x.length()];
    for(int i=0;x.length();i+) {
       ch[i]=x.charAt(i);
       System.out.println(ch[i]);
    }

示例字符串较大且有多行。

4 个答案:

答案 0 :(得分:2)

字符串toCharArray()

中有方法
"aab".toCharArray()

但是这个方法无论如何都需要为新的char数组添加额外的内存

答案 1 :(得分:1)

您是否有理由将字符串中的所有字符存储在数组中?如果您只想逐个打印字符,则无需将它们存储在数组中。

您的for循环行也包含错误。

String x = "<BigBus><color>RED</color><number>123</number>........</BigBus>";

for(int i=0; i < x.length(); i++) {
    char c = x.charAt(i);
    System.out.println(c);
}

答案 2 :(得分:1)

xh = x.toCharArray();

这将解决问题

答案 3 :(得分:1)

最佳解决方案是使用 Java 8 功能。

方法chars()返回给定字符串中的字符。但它只打印char数值。为方便起见,我们必须添加实用方法:

public class IterateString {

    private static void printChar(int aChar) {
        System.out.println((char) (aChar));
    }

    public static void main(String[] args) {
        String str = "<BigBus><color>RED</color><number>123</number>........</BigBus>";

        str.chars()
                .forEach(IterateString::printChar);

        // other options
        System.out.println();
        str.chars()
            .mapToObj(ch -> (char) ch)
            .forEach(System.out::println);

        System.out.println();
        str.chars()
            .filter(Character::isDigit)
            .forEach(IterateString::printChar);
    }
}

使用 ,您可以获得很多好处,例如延迟评估,lambda语法,方法引用...... 有关更多信息,请参阅java 8功能。

<强> 顺便说一句
你的代码片段有一些错误,它应该如下所示:

    for (int i = 0; i < str.length(); i++) {
        ch[i] = str.charAt(i);
        System.out.println(ch[i]);
    }

而不是:

char[] xh = new char[x.length()];
for(int i=0; x.length(); i+) {
   ch[i] = x.charAt(i);
   System.out.println(ch[i]);
}