У моєму рядку я можу мати довільну кількість слів, які розділені комами. Я хотів, щоб кожне слово було додане до 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 в Список <Character>
У Java 9 використання List#of
, яке є незмінним списком статичних заводських методів, стає більш простим.
String s = "a,b,c,d,e,.........";
List<String> lst = List.of(s.split(","));
s.split("\\s*,\\s*")
можна додати для додаткового догляду
Якщо ви імпортуєте або у своєму коді є масив (рядок типу), і вам доведеться перетворити його в масив (рядок внеску), тоді використання колекцій краще. подобається це:
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 в першу чергу. Дуже часто ви збираєтеся фільтрувати список на основі додаткових критеріїв, для яких Потік ідеально підходить. Ви можете захотіти набір; ви можете відфільтрувати їх за допомогою іншого регулярного виразу тощо. 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;
}
Для цього використовується Гсон у Котліні
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 (). Collection (). Але спочатку я зміню рядок на 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>()
може бути зайвим, залежно від способу його використання. (як це у вашому прикладі;)