В моей строке я могу иметь произвольное количество слов, разделенных запятыми. Я хотел, чтобы каждое слово добавлялось в 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]
Это сообщение было переписано как статья здесь .
split
его после: P
Arrays.toString()
для печати, но да.
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());
replace = s1.replaceAll("^\\[|]$", "");
Вариант 1 :
List<String> list = Arrays.asList("hello");
Вариант 2 :
List<String> list = new ArrayList<String>(Arrays.asList("hello"));
На мой взгляд, вариант 1 лучше, потому что
asList
Метод создает и возвращает объект ArrayList.Пожалуйста, обратитесь к документации здесь
List<Character> word1 = new ArrayList<Character>(Arrays.asList(A[0].toCharArray()));
Я пытаюсь получить первую строку массива строк и преобразовать эту строку в charArray, а этот charArray в List <Character>
В Java 9 использование List#of
, которое представляет собой статические фабричные методы неизменяемого списка, стало более простым.
String s = "a,b,c,d,e,.........";
List<String> lst = List.of(s.split(","));
s.split("\\s*,\\s*")
могут быть добавлены для дополнительного ухода
Если вы импортируете или у вас есть массив (строки типа) в вашем коде, и вам нужно преобразовать его в arraylist (внешняя строка), то лучше использовать коллекции. как это:
String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then
List allEds = new ArrayList(); Collections.addAll(allEds, array1);
Хорошо, я собираюсь расширить ответы здесь, поскольку многие люди, которые приходят сюда, хотят разделить строку пробелом . Вот как это делается:
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);
Если вы хотите преобразовать строку в 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;
}
Но в вашем примере я вижу массив строк, поэтому, если вы хотите преобразовать массив строк в ArrayList, используйте это:
public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){
ArrayList<String> stringList = new ArrayList<String>();
for (String s : strArr) {
stringList.add(s);
}
return stringList;
}
Это использует 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])
Возьмем вопрос: перевернуть строку. Я сделаю это с помощью 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
*/
Если вы используете гуаву (и вы должны использовать ее, см. Эффективный элемент Java № 15 ):
ImmutableList<String> list = ImmutableList.copyOf(s.split(","));
new ArrayList<String>()
может быть избыточным в зависимости от того, как он используется. (как в вашем примере;)