ในสตริงของฉันฉันสามารถมีจำนวนคำตามอำเภอใจซึ่งคั่นด้วยจุลภาค ฉันต้องการให้แต่ละคำเพิ่มเข้าไปใน 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(",")));
การสาธิต:
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("^\\[|]$", "");
","
และอื่น ๆ", "
เป็นตัวคั่นดังนั้นฉันจึงเพิ่มฟังก์ชัน.replaceAll(", ", ",")
before split
ตัวเลือกที่ 1 :
List<String> list = Arrays.asList("hello");
ตัวเลือกที่ 2 :
List<String> list = new ArrayList<String>(Arrays.asList("hello"));
ในความคิดของฉัน Option1 ดีกว่าเพราะ
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*")
สามารถเพิ่มเพื่อการดูแลเป็นพิเศษ
ตกลงฉันจะขยายในคำตอบที่นี่ตั้งแต่ผู้คนจำนวนมากที่มาที่นี่ต้องการที่จะแยกสตริงโดยช่องว่าง นี่คือวิธีการ:
List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));
หากคุณกำลังนำเข้าหรือคุณมีอาร์เรย์ (ประเภทสตริง) ในโค้ดของคุณและคุณต้องแปลงเป็นอาร์เรย์ (สตริงนอกหลักสูตร) การใช้คอลเลกชันจะดีกว่า แบบนี้:
String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then
List allEds = new ArrayList(); Collections.addAll(allEds, array1);
คุณสามารถใช้:
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;
}
เข้าใจง่ายขึ้นมีดังนี้
String s = "a,b,c,d,e";
String[] sArr = s.split(",");
List<String> sList = Arrays.asList(sArr);
นี่คือการใช้ 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])
ลองถามคำถาม: ย้อนกลับสตริง ฉันจะทำโดยใช้สตรีม () รวบรวม () แต่ก่อนอื่นฉันจะเปลี่ยนสตริงเป็น 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());
}
หากคุณกำลังใช้ guava (และคุณควรจะเป็นดูรายการ java ที่มีประสิทธิภาพ # 15 ):
ImmutableList<String> list = ImmutableList.copyOf(s.split(","));
new ArrayList<String>()
อาจซ้ำซ้อนขึ้นอยู่กับวิธีการใช้งาน (ตามตัวอย่างของคุณ)