В моей строке я могу иметь произвольное количество слов, разделенных запятой. Я хотел, чтобы каждое слово было добавлено в ArrayList. Например:.
String s = "a,b,c,d,e,.........";
В моей строке я могу иметь произвольное количество слов, разделенных запятой. Я хотел, чтобы каждое слово было добавлено в ArrayList. Например:.
String s = "a,b,c,d,e,.........";
Попробуйте что-нибудь вроде
List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));
Arrays.asList
документацияString.split
документацияArrayList(Collection)
документация конструктораДемо:
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]
Это сообщение было переписано как статья здесь.
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());
В Java 9 с помощью List#of
, который является статичным неизменным списком Factory, стал проще.
String s = "a,b,c,d,e,.........";
List<String> lst = List.of(s.split(","));
Вариант 1:
List<String> list = Arrays.asList("hello");
Вариант 2:
List<String> list = new ArrayList<String>(Arrays.asList("hello"));
На мой взгляд, Option1 лучше, потому что
asList
создает и возвращает объект ArrayList.Пожалуйста, обратитесь к документации здесь
Если вы импортируете или у вас есть массив (строки типа) в коде, и вам нужно преобразовать его в arraylist (строка offcourse), то лучше использовать коллекции. например:
String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then
List allEds = new ArrayList(); Collections.addAll(allEds, array1);
Если вы хотите преобразовать строку в ArrayList, попробуйте это:
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;
}
Но я вижу строковый массив в вашем примере, поэтому, если вы хотите преобразовать массив string в ArrayList, используйте это:
public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){
ArrayList<String> stringList = new ArrayList<String>();
for (String s : strArr) {
stringList.add(s);
}
return stringList;
}
Хорошо, я собираюсь рассказать о ответах здесь, так как многие люди, которые приходят сюда, хотят разделить строку на whitespace. Вот как это делается:
List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));
Вы можете использовать:
List<String> tokens = Arrays.stream(s.split("\\s+")).collect(Collectors.toList());
Вы должны спросить себя, действительно ли вам нужен ArrayList. Очень часто вы собираетесь фильтровать список на основе дополнительных критериев, для которых Stream идеально. Вам может понадобиться набор; вы можете фильтровать их с помощью другого регулярного выражения и т.д. Java 8 предоставляет это очень полезное расширение, кстати, которое будет работать на любом 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);
Проще понять это так:
String s = "a,b,c,d,e";
String[] sArr = s.split(",");
List<String> sList = Arrays.asList(sArr);
Давайте возьмем вопрос: перевернуть строку. Я сделаю это с помощью 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
*/
Я рекомендую использовать StringTokenizer, очень эффективный
List<String> list = new ArrayList<>();
StringTokenizer token = new StringTokenizer(value, LIST_SEPARATOR);
while (token.hasMoreTokens()) {
list.add(token.nextToken());
}
Это использует Gson в Kotlin
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])
Если вы используете гуаву (так и должно быть, посмотрите эффективный элемент Java № 15):
ImmutableList<String> list = ImmutableList.copyOf(s.split(","));
Это ответ, рекомендованный Android
<string-array name="android_versions">
<item>Android</item>
<item>Ice Cream Sandwich</item>
<item>Jelly Bean</item>
<item>Kitkat</item>
<item>Lollipop</item>
<item>Marshmallow</item>
<item>Nougat</item>
<item>Oreo</item>
<item>Pie</item>
<item>Q</item>
</string-array>
ArrayList<String> names = new ArrayList<>();
//List<String> names = new ArrayList<>();
Collections.addAll(names, getResources().getStringArray(R.array.android_versions));