-1

实际的程序略有不同并且更复杂,但为了简单起见:

假设我有一个由字符串组成的数组。字符串可以是动物名称或鸟类名称。字符串都混在一起了,没有特定的顺序。

我需要确保首先显示动物名称,然后显示鸟类名称。无需按字母顺序排列。

假设我已经有了需要移到最后的鸟名列表。

谁能帮助我用一种快速有效的方法在 Java 中实现这一目标?

BEFORE:
Cat
Crow
Dog
Cow
Parrot

AFTER:
Cat
Dog
Cow
Crow
Parrot

现有代码是这样的:

mixedArray

for (each element in the mixedArray){
    //do some processing
    ..
    out.write(mixedArray[x]);
}
4

2 回答 2

1

这可能有效

int begin = 0;
int end = mixedArray.length - 1;
String[] sortedArray = new String[mixedArray.length];

for (String mixed : mixedArray) {
    for (String bird : birdArray) {
        if (mixed.equals(bird)) {
             sortedArray[end--] = mixed;
        } else {
             sortedArray[begin++] = mixed;
        }
    }
}

在这里,sortedArray我们将存储排序结果,begin是排序数组的起始索引,end 是最后一个索引。birdArray是包含鸟类名称列表的数组。我没有测试过这段代码,但这应该可以。

于 2013-10-04T01:58:47.130 回答
0

我认为有两种方法可以做到这一点。

  1. 与 Kaushik Sivakumar 的评论相同
  2. 如果您不想处理数组的复制/移动,请使用 2 个带有 if 条件的 for 循环。

for(每个元素){检查如果不是鸟然后打印出来}

for(每个元素){检查是否有鸟然后打印出来}

于 2013-10-04T02:02:43.577 回答