我想知道读取不影响程序内存和性能的字符串的有效方法。
我有以下实施方式:
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]);
}
示例字符串较大且有多行。
答案 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]);
}