将特定数组元素移动到最后 - java

时间:2013-10-04 01:38:52

标签: java arrays sorting

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

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

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

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

任何人都可以通过快速有效的方式帮助我在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]);
}

2 个答案:

答案 0 :(得分: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是包含鸟名列表的数组。我没有测试过这段代码,但这应该可行。

答案 1 :(得分:0)

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

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

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

         

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