쉼표로 구분 된 문자열을 ArrayList로 변환하는 방법?
Java에 쉼표로 구분 된 문자열을 일부 컨테이너 (예 : 배열, 목록 또는 벡터)로 변환 할 수있는 내장 메소드가 있습니까? 아니면이를 위해 사용자 지정 코드를 작성해야합니까?
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = //method that converts above string into list??
쉼표로 구분 된 문자열을 목록으로 변환
List<String> items = Arrays.asList(str.split("\\s*,\\s*"));
위의 코드는 다음과 같이 정의 된 구분 기호로 문자열을 분할합니다. 이렇게 zero or more whitespace, a literal comma, zero or more whitespace
하면 단어가 목록에 배치되고 단어와 쉼표 사이의 공백이 축소됩니다.
유의하시기 바랍니다 단순히이 반환 배열에 래퍼 : 당신 CAN NOT 예를 들어 .remove()
결과에서 List
. 실제로 ArrayList
는 추가로 사용해야 new ArrayList<String>
합니다.
Arrays.asList
List
배열이 지원 하는 고정 크기를 반환합니다 . 정상적인 변경 가능을 원하면 java.util.ArrayList
다음을 수행해야합니다.
List<String> list = new ArrayList<String>(Arrays.asList(string.split(" , ")));
또는 구아바를 사용하여 :
List<String> list = Lists.newArrayList(Splitter.on(" , ").split(string));
를 사용 Splitter
하면 문자열을 분할하는 방법에 더 많은 유연성을 제공하고 예를 들어 결과에서 빈 문자열을 건너 뛰고 결과를자를 수 있습니다. 또한 String.split
정규식으로 나눌 필요 가없는 것보다 이상한 행동이 적습니다 (단 하나의 옵션 일뿐입니다).
두 단계 :
String [] items = commaSeparated.split("\\s*,\\s*");
List<String> container = Arrays.asList(items);
CSV를 ArrayList로 변환하는 또 다른 방법은 다음과 같습니다.
String str="string,with,comma";
ArrayList aList= new ArrayList(Arrays.asList(str.split(",")));
for(int i=0;i<aList.size();i++)
{
System.out.println(" -->"+aList.get(i));
}
당신을 인쇄합니다
-> 문자열
->와
-> 쉼표
List
OP가 언급 한대로 a 가 최종 목표 인 경우 , 이미 승인 된 답변이 여전히 가장 짧고 가장 좋습니다. 그러나 Java 8 Streams를 사용하는 대안을 제공하고 싶습니다 . 추가 처리를위한 파이프 라인의 일부인 경우 더 많은 이점을 제공합니다.
.split 함수 (기본 배열)의 결과를 스트림에 래핑 한 다음 목록으로 변환합니다.
List<String> list =
Stream.of("a,b,c".split(","))
.collect(Collectors.toList());
ArrayList
OP의 제목에 따라 결과를 저장 해야하는 경우 다른 Collector
방법을 사용할 수 있습니다 .
ArrayList<String> list =
Stream.of("a,b,c".split(","))
.collect(Collectors.toCollection(ArrayList<String>::new));
또는 RegEx 구문 분석 API를 사용하여 :
ArrayList<String> list =
Pattern.compile(",")
.splitAsStream("a,b,c")
.collect(Collectors.toCollection(ArrayList<String>::new));
list
변수 List<String>
대신을 입력 한 상태로 두는 것도 고려할 수 있습니다 ArrayList<String>
. 에 대한 일반적인 인터페이스는 List
여전히 ArrayList
구현 과 충분히 유사합니다 .
이 코드 예제는 그 자체로 많은 것을 추가하지 않는 것 같습니다 (더 많은 타이핑 제외) . 문자열을 Longs List로 변환하는 것에 대한이 답변 과 같이 더 많은 것을 계획하고 있다면 스트리밍 API는 실제로 강력합니다. 작업을 차례로 파이프 라인
완전성을 위해 알다시피
이것에 대한 내장 메소드는 없지만 간단히 split () 메소드를 사용할 수 있습니다.
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items =
new ArrayList<String>(Arrays.asList(commaSeparated.split(",")));
List<String> items= Stream.of(commaSeparated.split(","))
.map(String::trim)
.collect(toList());
List<String> items = Arrays.asList(commaSeparated.split(","));
그것은 당신을 위해 작동합니다.
asList와 split을 결합 할 수 있습니다
Arrays.asList(CommaSeparated.split("\\s*,\\s*"))
이 코드는 도움이 될 것입니다.
String myStr = "item1,item2,item3";
List myList = Arrays.asList(myStr.split(","));
Guava를 사용하여 문자열을 분할하고 ArrayList로 변환 할 수 있습니다. 이것은 빈 문자열에서도 작동하며 빈 목록을 반환합니다.
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
String commaSeparated = "item1 , item2 , item3";
// Split string into list, trimming each item and removing empty items
ArrayList<String> list = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(commaSeparated));
System.out.println(list);
list.add("another item");
System.out.println(list);
다음을 출력합니다.
[item1, item2, item3]
[item1, item2, item3, another item]
를 사용하는 예 Collections
입니다.
import java.util.Collections;
...
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = new ArrayList<>();
Collections.addAll(items, commaSeparated.split("\\s*,\\s*"));
...
Java 8 에서 스트림을 사용하여이를 해결하는 방법은 여러 가지가 있지만 IMO는 다음과 같은 하나의 라이너가 간단합니다.
String commaSeparated = "item1 , item2 , item3";
List<String> result1 = Arrays.stream(commaSeparated.split(" , "))
.collect(Collectors.toList());
List<String> result2 = Stream.of(commaSeparated.split(" , "))
.collect(Collectors.toList());
먼저를 사용하여 분할 String.split(",")
한 다음 반환 된 문자열 array
을 ArrayList
사용하여 변환 할 수 있습니다Arrays.asList(array)
groovy에서는 tokenize (Character Token) 방법을 사용할 수 있습니다.
list = str.tokenize(',')
List commaseperated = new ArrayList();
String mylist = "item1 , item2 , item3";
mylist = Arrays.asList(myStr.trim().split(" , "));
// enter code here
나는 일반적으로 목록에 미리 컴파일 된 패턴을 사용합니다. 또한 listToString 표현식 중 일부를 따르는 대괄호를 고려할 수 있으므로 약간 더 보편적입니다.
private static final Pattern listAsString = Pattern.compile("^\\[?([^\\[\\]]*)\\]?$");
private List<String> getList(String value) {
Matcher matcher = listAsString.matcher((String) value);
if (matcher.matches()) {
String[] split = matcher.group(matcher.groupCount()).split("\\s*,\\s*");
return new ArrayList<>(Arrays.asList(split));
}
return Collections.emptyList();
List<String> items = Arrays.asList(s.split("[,\\s]+"));
다음과 같이 할 수 있습니다.
이렇게하면 공백이 제거되고 공백에 대해 걱정할 필요가없는 경우 쉼표로 분할됩니다.
String myString= "A, B, C, D";
//Remove whitespace and split by comma
List<String> finalString= Arrays.asList(myString.split("\\s*,\\s*"));
System.out.println(finalString);
Splitter 클래스를 사용하여 동일한 결과를 얻을 수 있습니다.
var list = Splitter.on(",").splitToList(YourStringVariable)
(kotlin으로 작성)
Kotlin에서 문자열 목록이 이와 같고 문자열을 ArrayList로 변환하는 데 사용할 수있는 경우이 코드 줄을 사용하십시오
var str= "item1, item2, item3, item4"
var itemsList = str.split(", ")
문자열-> 콜렉션 변환 : (문자열-> 문자열 []-> 콜렉션)
// java version 8
String str = "aa,bb,cc,dd,aa,ss,bb,ee,aa,zz,dd,ff,hh";
// Collection,
// Set , List,
// HashSet , ArrayList ...
// (____________________________)
// || ||
// \/ \/
Collection<String> col = new HashSet<>(Stream.of(str.split(",")).collect(Collectors.toList()));
콜렉션-> 문자열 [] 변환 :
String[] se = col.toArray(new String[col.size()]);
문자열-> 문자열 [] 변환 :
String[] strArr = str.split(",");
그리고 수집-> 수집 :
List<String> list = new LinkedList<>(col);
Java 8 에서 쉼표로 구분하여 Collection을 문자열로 변환
listOfString 객체에는 [ "A", "B", "C", "D"] 요소가 포함됩니다.
listOfString.stream().map(ele->"'"+ele+"'").collect(Collectors.joining(","))
출력은 :- 'A', 'B', 'C', 'D'
Java 8에서 문자열 배열을 목록으로 변환
String string[] ={"A","B","C","D"};
List<String> listOfString = Stream.of(string).collect(Collectors.toList());
ArrayList<HashMap<String, String>> mListmain = new ArrayList<HashMap<String, String>>();
String marray[]= mListmain.split(",");
참고 URL : https://stackoverflow.com/questions/7488643/how-to-convert-comma-separated-string-to-arraylist
'Programing' 카테고리의 다른 글
Visual Studio Code의 사이드 바에서 특정 파일을 숨기려면 어떻게합니까? (0) | 2020.02.12 |
---|---|
자바 스크립트에서 배열 교차를위한 가장 간단한 코드 (0) | 2020.02.12 |
모든 줄을 클립 보드에 복사 (0) | 2020.02.12 |
언제 빌더 패턴을 사용 하시겠습니까? (0) | 2020.02.12 |
Mac OS X Lion에서 환경 변수 설정 (0) | 2020.02.11 |