web-dev-qa-db-ja.com

Javaで配列リストを使用するには?

ArrayListにデータを保存するかどうかを知る必要があり、保存した値を取得する必要があります。

たとえば、次のような配列リストがある場合

      ArrayList A = new ArrayList();
      A = {"Soad", "mahran"};

そして、各文字列要素を取得したいのですが、どうすればいいですか?

私は次のコードでそれをやろうとしました:

package arraylist;

import Java.util.ArrayList;

public class Main {

        public static void main(String[] args) {
        ArrayList S = new ArrayList();

        String A = "soad ";
        S.add(A);
        S.add("A");
        String F = S.toString();
        System.out.println(F);
        String [] W = F.split(",");
        for(int i=0 ; i<W.length ; i++) {
           System.out.println(W[i]);
        }
    }
}
48
soad El-hayek

次のスニペットは、指定されたインデックスでListから要素を取得する方法と、高度なfor-eachループを使用してすべての要素を反復処理する方法を示す例を示しています。

    import Java.util.*;

    //...

    List<String> list = new ArrayList<String>();
    list.add("Hello!");
    list.add("How are you?");

    System.out.println(list.get(0)); // prints "Hello!"

    for (String s : list) {
        System.out.println(s);
    } // prints "Hello!", "How are you?"

次のことに注意してください。

  • 生のArrayListタイプの代わりに、汎用のList<String>およびArrayList<String>タイプが使用されます。
  • 変数名は小文字で始まります
  • listは、List<String>、つまり実装タイプArrayList<String>ではなくインターフェイスタイプとして宣言されます。

参照資料

API:

生のタイプを使用しないでください

  • JLS 4.8 Rawタイプ

    Raw型の使用は、レガシーコードの互換性の譲歩としてのみ許可されています。 Javaプログラミング言語への汎用性の導入後に記述されたコードで生の型を使用することは強く推奨されません。 Javaプログラミング言語の将来のバージョンでは、生の型の使用が禁止される可能性があります。

  • 有効なJava第2版:項目23:新しいコードで生の型を使用しない

    生の型を使用すると、ジェネリックの安全性と表現力のメリットがすべて失われます。

型宣言で実装クラスへのインターフェースを優先する

  • 有効なJava第2版:項目52:インターフェースでオブジェクトを参照する

    [...]オブジェクトを参照するには、クラスよりもインターフェイスの使用を優先する必要があります。 適切なインターフェイスタイプが存在する場合、パラメータ、戻り値、変数、およびフィールドはすべて、インターフェイスタイプを使用して宣言する必要があります

命名規則

変数:変数を除き、すべてのインスタンス、クラス、およびクラス定数は大文字と小文字が混在しています小文字の最初の文字

52

リスト は、要素の順序付けられた コレクション です。 addメソッドで追加し、get(int index)メソッドで取得できます。リストの反復、要素の削除などもできます。リストの基本的な使用例を次に示します。

List<String> names = new ArrayList<String>(3); // 3 because we expect the list 
    // to have 3 entries.  If we didn't know how many entries we expected, we
    // could leave this empty or use a LinkedList instead
names.add("Alice");
names.add("Bob");
names.add("Charlie");
System.out.println(names.get(2)); // prints "Charlie"
System.out.println(names); // prints the whole list
for (String name: names) {
    System.out.println(name);  // prints the names in turn.
}
6
jjujuma

インデックス(System.out.println(S.get(0));)で文字列を取得するか、繰り返し処理することができます。

for (String s : S) {
  System.out.println(s);
}

リストを反復処理する他の方法(およびその意味)については、 Javaの従来のforループとイテレーター を参照してください。

さらに:

  • 大文字で始まる変数名は使用しないでください
  • 配列リストをパラメータ化する必要があります:ArrayList<String> list = new ArrayList<String>();
  • javaの広範なAPIドキュメント(別名 Javadoc )に精通する必要があります。 Java 5Java 6
3
sfussenegger

これでうまくいくはずです:

String elem = (String)S.get(0);

配列の最初のアイテムを返します。

または

for(int i=0 ; i<S.size() ; i++){
     System.out.println(S.get(i));
}
2
dvd

Java 1.5以降を使用する場合は、次を使用できます。

List<String> S = new ArrayList<String>();
s.add("My text");

for (String item : S) {
  System.out.println(item);
}
1
extraneon

最初に コレクションフレームワークチュートリアル をお読みください。

しかし、あなたの質問に答えるために、これはあなたがそれをするべき方法です:

ArrayList<String> strings = new ArrayList<String>();
strings.add("String1");
strings.add("String2");

// To access a specific element:
System.out.println(strings.get(1));
// To loop through and print all of the elements:
for (String element : strings) {
    System.out.println(element);
}
1
DaveJohnston

object get(int index)は、呼び出しコレクション内の指定されたインデックスに格納されているオブジェクトを返すために使用されます。

コードスニペット :

import Java.util.*;


class main
{
    public static void main(String [] args)
    {
        ArrayList<String> arr = new ArrayList<String>();
        arr.add("Hello!");
        arr.add("Ishe");
        arr.add("Watson?");

        System.out.printf("%s\n",arr.get(2)); 

        for (String s : arr) 
        {
            System.out.printf("%s\n",s);
        } 
    }
}
1
rashedcs

3行のソリューションですが、非常にうまく機能します。

int[] source_array = {0,1,2,3,4,5,6,7,8,9,10,11};
ArrayList<Integer> target_list = new ArrayList<Integer>();
for(int i = 0; i < source_array.length; i++){
    target_list.add(random_array[i]);
}
1
Vadim Gouskov

Java 8では、Iterableインターフェース内にforEach()のデフォルトの実装が導入されましたが、宣言型アプローチにより簡単に実装できます。

  List<String> values = Arrays.asList("Yasir","Shabbir","Choudhary");

  values.forEach( value -> System.out.println(value));

Iterableインターフェイスのコードは次のとおりです

  default void forEach(Consumer<? super T> action) {
    Objects.requireNonNull(action);
    for (T t : this) {
        action.accept(t);
    }
}

参照

まず、リストに保持する必要があるデータ型を定義する必要があります。データがStringになることを述べたように、リストはString型で作成する必要があります。

次に、リストのすべての要素を取得する場合は、単純なforループまたはfor eachループを使用してリストを反復処理するだけです。

List <String> list = new ArrayList<>();
list.add("A");
list.add("B");

for(String s : list){
    System.out.println(s);
}

また、汎用のArrayListの代わりに生のArrayListを使用する場合は、値をダウンキャストする必要があります。生のArrayListを使用する場合、すべての要素はObjectの形式で保存されます。

List list = new ArrayList();
list.add("A");
list.add("B");

for(Object obj : list){
    String s = (String) obj; //downcasting Object to String
    System.out.println(s);
}
0
Anirudh Agarwal