从 java 中的字符串中读取字符的最佳和有效方法是什么
What is the best and effective way to read chars from string in java
我想知道在不影响内存和程序性能的情况下读取字符串的有效方法。
我有以下实现:
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]);
}
示例字符串较大且有多行。
字符串中有方法toCharArray()
"aab".toCharArray()
但是这个方法无论如何都需要额外的内存来存放新的字符数组
为什么要将字符串的所有字符存储在一个数组中?如果你只是想一个一个打印字符,没有必要将它们存储在一个数组中。
您的 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);
}
xh = x.toCharArray();
这将解决问题
最好的解决方案是为此使用 Java 8 个特征。
方法chars()
returns 来自给定字符串的字符。但它只打印字符数值。为了方便起见,我们必须添加实用方法:
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);
}
}
使用 streams 你有很多好处,如惰性计算、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]);
}
我想知道在不影响内存和程序性能的情况下读取字符串的有效方法。
我有以下实现:
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]);
}
示例字符串较大且有多行。
字符串中有方法toCharArray()
"aab".toCharArray()
但是这个方法无论如何都需要额外的内存来存放新的字符数组
为什么要将字符串的所有字符存储在一个数组中?如果你只是想一个一个打印字符,没有必要将它们存储在一个数组中。
您的 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);
}
xh = x.toCharArray();
这将解决问题
最好的解决方案是为此使用 Java 8 个特征。
方法chars()
returns 来自给定字符串的字符。但它只打印字符数值。为了方便起见,我们必须添加实用方法:
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);
}
}
使用 streams 你有很多好处,如惰性计算、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]);
}