for (int x = 0; x < arrays.length; x++) {
for (int y = (x + 1); y < arrays.length; y++) {
if (arrays[x].compareToIgnoreCase(arrays[y]) == 0) {
String temp = arrays[x];
arrays[x] = arrays[y];
arrays[y] = temp;
words=arrays[x];
count++;
arrays[y]= null;// I wanna remove arrays[y] from the array.
}
}
}
我使用冒泡排序来查找和计算数组中的重复数量,但是当我打印出数组中的重复数量时,它给了我。例如。
Word: Car Printed:3 times
Word: Car Printed:2 times
Word: Car Printed:1 times
答案 0 :(得分:2)
您没有删除任何内容:您只是在数组中设置空引用。您应该使用ArrayList
代替。这将使用方法remove()
完成工作。
如果你真的陷入阵列,你必须构建一个全新的数组,其大小将是前一个数组的大小 - 然后将前一个数组复制到新数组中。你应该考虑使用第一种替代方案。
答案 1 :(得分:0)
您会发现使用第二个数据结构进行计数会更容易。试试这个:
// Count each word
Map<String, Integer> counts = new HashMap<String, Integer>();
for (String s: arrays) { // TODO rename "arrays" to "words" or something
s = s.toLowerCase();
int count = counts.get(s);
if (count == null) {
counts.put(s, 1);
}
else {
counts.put(s, count + 1)
}
}
// Sort and print
List<String> keys = counts.keySet();
Collections.sort(keys);
for (String key: keys) {
System.out.println(key + ": " + counts[key]);
}