我有一个我在String中转换的元素数组。 但是这个String再次保留了数组的空元素,我无法将它与另一个String进行比较。
如何删除空元素? 我不知道如何使用收藏集,还有另外一种方法吗?
char[] copyLoop = new char[26];
for (int i = 0; i < letters.length; i++) {
if (letters[i] > 1) {
char c = (char) (i + 97);
copyLoop[i] = c;
}
}
String rslt = String.copyValueOf(copyLoop);
return rslt;
答案 0 :(得分:2)
数组中没有“空”元素,也无法调整数组大小。您所能做的就是将您感兴趣的所有元素放在数组的一端(例如从零开始),它们之间没有“无趣”元素,然后从数组的一部分构造一个字符串。 / p>
使用另一个变量来存储数组中下一个“empty”元素的索引:每次找到一个字母时,都要增加此变量。完成迭代letters
后,此变量将包含用于创建字符串的数组长度。
char[] copyLoop = new char[26];
int dst = 0;
for (int i = 0; i < letters.length; i++) {
if (letters[i] > 1) {
char c = (char) (i + 97);
copyLoop[dst++] = c;
}
}
return new String(copyLoop, 0, dst);
或者,当然,使用StringBuilder
(在内部有效地做同样的事情):
StringBuilder copyLoop = new StringBuilder(26);
for (int i = 0; i < letters.length; i++) {
if (letters[i] > 1) {
char c = (char) (i + 97);
copyLoop.append(c);
}
}
return copyLoop.toString();
答案 1 :(得分:0)
不幸的是没有。 Java中的数组不可缩小/可扩展,它们的大小设置为常量。有两种方法可以解决:
使用集合,即创建字符列表ArrayList<Character> list = new ArrayList<>();
,使用它并删除每个循环周期后不需要的项目。
在for循环的每个循环中,当你需要删除数组中的项目时,只需创建一个较小的新char []数组,并将旧数组的内容复制到新数组,除了对于您删除的值。
另外,如果您正在使用Strings,建议使用可变的String类s.a. StringBuilder或StringBuffer,允许您从String中添加/删除字符。在您的情况下,这似乎是最好的解决方案。