我试图显示我所创建的数组中的元素数量。它是一个带有字符串作为数据类型的常规数组。如果可以显示数组中的元素总数,那么代码是否类似于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;
}
答案 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并将它们添加到一个计数器。