我试图在使用它后从数组中删除一个字符串。但我不知道我哪里出错了

时间:2016-05-17 08:23:25

标签: java arrays

    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

2 个答案:

答案 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]);
}