2017-09-16 12 views
-1

私が作った配列の要素の数を表示しようとしています。これはデータ型として文字列を持つ通常の配列です。配列の要素の総数を表示することができれば、コードはArrayListのものに似ていますか?要素数を配列に表示する方法は?

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; 
} 
+1

配列内の要素の総数: 'array.length' – Andreas

+1

14個の要素の配列を作成し、それを放棄し、次の行の4要素の配列に置き換える点は何ですか? – Andreas

+0

[文字列配列の長さを見つける方法](https://stackoverflow.com/questions/4862092/how-to-find-length-of-a-string-array) – Dukeling

答えて

0

私は可能であれば、それは方法size()で非常に簡単になりますので、あなたは、ArrayListのを使用することをお勧めします。配列を使用する必要がある場合は、配列のサイズがすでに決まっているため、forループを調べて、配列のどのスロットに!= nullを付けてカウンタに追加するかを調べることができます。

+1

null値を数えず、この例の配列にnullsがありません*(ガベージ14要素配列を無視してすぐに破棄)* 。 – Andreas

1

すでに述べたように、使用する最適な配列タイプは、ArrayList.add(index, valueToAdd)メソッドを使用して配列に要素を挿入するListまたはArrayListです。当然のことながら、基本的な配列で行うことができますが、あなたがすでに気づいたように、あなたの作業を少しでも行うことが必要です。 1つの可能な方法は、このようなことかもしれません。元のコードを掲載して

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. 
} 

アンドレアスはとても親切に指摘したように、あなたは非常に次の行でリスト文字列配列を宣言し、14個の要素を含むように、それを初期化していましたこの配列を再初期化して4つの要素のみを含むようにします。いっそ

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

か::

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

だけで何かにあなただけ宣言し、このような配列を初期化することができたので、最初の初期化は、酸素、時間、メモリ、労力などの無駄です覚えている。

関連する問題