web-dev-qa-db-ja.com

文字列をArrayListに変換する方法は?

文字列では、コンマで区切られた任意の数の単語を使用できます。各WordをArrayListに追加したかった。例えば。:

String s = "a,b,c,d,e,.........";
87
Sameek Mishra

のようなものを試してください

List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));

デモ:

String s = "lorem,ipsum,dolor,sit,amet";

List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));

System.out.println(myList);  // prints [lorem, ipsum, dolor, sit, amet]

この投稿は記事として書き直されました here

218
aioobe
 String s1="[a,b,c,d]";
 String replace = s1.replace("[","");
 System.out.println(replace);
 String replace1 = replace.replace("]","");
 System.out.println(replace1);
 List<String> myList = new ArrayList<String>(Arrays.asList(replace1.split(",")));
 System.out.println(myList.toString());
28
Sameek Mishra

Option1

List<String> list = Arrays.asList("hello");

Option2

List<String> list = new ArrayList<String>(Arrays.asList("hello"));

私の意見では、Option1の方が優れている

  1. 作成されるArrayListオブジェクトの数を2から1に減らすことができます。asListメソッドは、ArrayListオブジェクトを作成して返します。
  2. そのパフォーマンスははるかに優れています(ただし、固定サイズのリストを返します)。

ドキュメントを参照してください here

6
Andy

Java 9では、 List#of を使用しました。これは不変リストの静的ファクトリメソッドであり、より簡単になりました。

 String s = "a,b,c,d,e,.........";
 List<String> lst = List.of(s.split(","));
6
Ravi

インポートする場合、またはコード内に(文字列型の)配列があり、それをarraylist(オフコース文字列)に変換する必要がある場合は、コレクションを使用することをお勧めします。このような:

String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then

List allEds = new ArrayList(); Collections.addAll(allEds, array1);
2
Andy

次を使用できます:

List<String> tokens = Arrays.stream(s.split("\\s+")).collect(Collectors.toList());

そもそもArrayListが本当に必要かどうかを自問する必要があります。多くの場合、追加の基準に基づいてリストをフィルタリングしますが、そのためにはストリームが最適です。セットが必要な場合があります。別の正規表現などを使用してフィルタリングすることもできます。Java8では、この非常に便利な拡張機能が、CharSequenceで機能します。 https://docs.Oracle.com/javase/ 8/docs/api/Java/util/regex/Pattern.html#splitAsStream-Java.lang.CharSequence- 。配列はまったく必要ないので、次のように作成しないでください。

// This will presumably be a static final field somewhere.
Pattern splitter = Pattern.compile("\\s+");
// ...
String untokenized = reader.readLine();
Stream<String> tokens = splitter.splitAsStream(untokenized);
1
AbuNassar

stringArrayListに変換したい場合は、これを試してください:

public ArrayList<Character> convertStringToArraylist(String str) {
    ArrayList<Character> charList = new ArrayList<Character>();      
    for(int i = 0; i<str.length();i++){
        charList.add(str.charAt(i));
    }
    return charList;
}

しかし、私はあなたの例に文字列配列を見るので、文字列配列ArrayListに変換したい場合はこれを使用してください:

public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){
    ArrayList<String> stringList = new ArrayList<String>();
    for (String s : strArr) {
        stringList.add(s);
    }
    return stringList;
}
1
denolk

ここに来る人の多くは文字列をwhitespaceで分割したいので、ここで答えを拡張します。これがどのように行われるかです:

List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));
1
Gherbi Hicham

理解しやすいのは次のようなものです。

String s = "a,b,c,d,e";
String[] sArr = s.split(",");
List<String> sList = Arrays.asList(sArr);
1
Abay

質問をしてみましょう:文字列を逆にします。 stream()。collect()を使用してこれを実行します。しかし、最初に文字列をArrayListに変更します。

    public class StringReverse1 {
    public static void main(String[] args) {

        String a = "Gini Gina  Proti";

        List<String> list = new ArrayList<String>(Arrays.asList(a.split("")));

        list.stream()
        .collect(Collectors.toCollection( LinkedList :: new ))
        .descendingIterator()
        .forEachRemaining(System.out::println);



    }}
/*
The output :
i
t
o
r
P


a
n
i
G

i
n
i
G
*/
0
Soudipta Dutta

グアバを使用している場合(使用する必要がある場合は、 有効なJavaアイテム#15 を参照):

ImmutableList<String> list = ImmutableList.copyOf(s.split(","));
0
sabujp

StringTokenizerの使用をお勧めします。非常に効率的です

     List<String> list = new ArrayList<>();

     StringTokenizer token = new StringTokenizer(value, LIST_SEPARATOR);
     while (token.hasMoreTokens()) {
           list.add(token.nextToken());
     }
0
Philippe

これはKotlinでGsonを使用しています

 val listString = "[uno,dos,tres,cuatro,cinco]"
 val gson = Gson()
 val lista = gson.fromJson(listString , Array<String>::class.Java).toList()
 Log.e("GSON", lista[0])