如何在数组中显示元素数?

时间:2017-09-16 17:33:51

标签: java

我试图显示我所创建的数组中的元素数量。它是一个带有字符串作为数据类型的常规数组。如果可以显示数组中的元素总数,那么代码是否类似于ArrayList' s?

    String[] list = new String[14];
    list = new String[] {"Bob", "Sal", "Jimmy" ,"John"};


    list = insert(list, "Joe", 0);
    list = insert(list, "Manny", list.length);
    list = insert(list, "Joey", list.length/2);



    System.out.println(Arrays.toString(list));

}

public static String[] insert(String[] original, String value, int k) {
    String[] copy = new String[original.length + 1];


    for(int i=0; i<k; i++)
    {
        copy[i] = original[i];
    }


    copy[k] = value;


    for(int i=k; i<original.length; i++)
    {
        copy[i+1] = original[i];
    }


    return copy;
}

2 个答案:

答案 0 :(得分:1)

如前所述,要使用的最佳Array类型是List或ArrayList,用于通过ArrayList.add(index, valueToAdd)方法将元素插入到该数组中。它当然可以使用基本阵列来完成,但是您需要做一些工作来执行您已经注意到的任务。一种可能的方式可能是这样的:

public static String[] insertStringArrayElement(String[] original, String value, int atIndex) {
    // Make sure the supplied index (k) is within bounds
    if (atIndex < 0 || atIndex > original.length) {
        throw new IllegalArgumentException("\ninsertArrayElement() Method Error! "
                                    + "The supplied index value is invalid (" 
                                    + atIndex + ")!\n");
    }

    String[] tmp = new String[original.length + 1];
    int elementCount = 0;   //Counter to track original elements.
    for(int i = 0; i < tmp.length; i++) {
        // Are where we want to insert a new elemental value?
        if (i == atIndex) {
            tmp[i] = value; // Insert the new value.
            i++;            //Increment i so to add the orininal element.
            // Make sure we don't go out of bounds.
            if (i < original.length) {
                tmp[i] =  original[elementCount]; // Add original element.
            }
        }
        // No we're not...
        else {
            tmp[i] = original[elementCount]; // Add original element.
        }
        elementCount++; // Increment counter for original element tracking.
    }
    return tmp; // Return our new Array.
} 

正如Andreas如此友好地指出的那样,在原始发布的代码中,您已声明 list String Array并将其初始化为包含14个元素,但在下一行中,您重新初始化此数组以仅包含4个要素。第一次初始化是浪费氧气,时间,内存,努力等,因为您可能刚刚声明并初始化了数组,如下所示:

String[] list = new String[] {"Bob", "Sal", "Jimmy" ,"John"};

或更好:

String[] list = {"Bob", "Sal", "Jimmy" ,"John"};

要记住的事情。

答案 1 :(得分:0)

我建议你尽可能使用ArrayList,因为使用方法size()会更容易。如果你必须使用数组,因为数组已经调整大小,你可以检查一个for循环,数组的哪个插槽是!=为null并将它们添加到一个计数器。