如何在已排序的数组中添加某些内容并使其保持排序状态而不使用sort数组?

时间:2018-11-18 03:17:27

标签: java arrays sorting

因此,我有9个比萨饼浇头的列表,这些比萨饼浇头已经按长度为15的数组进行了排序。其余6个空格用"zzz"填充。

toppings =new String[] {"pepperoni","sausage","extracheese","peppers","onions","mushrooms","ham","ground beef","anchovies","zzz","zzz","zzz","zzz","zzz","zzz"};

我正在编写一个addTopping方法,该方法将用实际的浇头替换zzz中的一个。

public boolean addTopping(String top)

在使数组保持排序的同时,我无法添加此额外的顶部。请记住,我只是在高中计算机科学专业,所以请不要太提前。

2 个答案:

答案 0 :(得分:0)

您需要创建一个用于调用元素索引的方法,以便在找到的第一个元素上添加,这是一个答案:

public void addTopping(String top) {
    int index = indexOf(toppings, "zzz");
    if (index != -1) {
        toppings[index] = top;
    }
}

public int indexOf(String[] elementData, String string) {
    if (string == null) {
        for (int i = 0; i < elementData.length; i++) {
            if (elementData[i] == null) {
                return i;
            }
        }
    } else {
        for (int i = 0; i < elementData.length; i++) {
            if (string.equals(elementData[i])) {
                return i;
            }
        }
    }
    return -1;
}

答案 1 :(得分:0)

尝试-

ArrayList<String> list = new ArrayList<String>();
    list.add("pepperoni");
    list.add("sausage");
    list.add("extracheese");
    list.add("peppers");
    list.add("onions");
    list.add("mushrooms");
    list.add("ham");
    list.add("ground beef");
    list.add("anchovies");
    list.add("zzz");
    list.add("zzz");
    list.add("zzz");
    list.add("zzz");
    list.add("zzz");
    list.add("zzz");

    String r="olive";
    Collections.sort(list);
    int s= list.size();
    for( int i=0; i< s ; i++){
        System.out.println(list.size());
        if(list.get(i).compareTo(r) == 1){
            list.add(i,r);
            break;
        }
    }
    for( int i=0; i< s ; i++){


        if(list.get(i).equals("zzz")){
            list.remove(i);
            break;
        }
    }
    for( int i=0; i< list.size() ; i++){
        System.out.println(list.get(i));
    }