나는 변환이 코드를 사용하고 Set
A를 List
:
Map<String, List<String>> mainMap = new HashMap<>();
for (int i=0; i < something.size(); i++) {
Set<String> set = getSet(...); //returns different result each time
List<String> listOfNames = new ArrayList<>(set);
mainMap.put(differentKeyName, listOfNames);
}
루프의 각 반복에서 새 목록을 작성하지 않으려 고합니다. 가능합니까?
답변
List.addAll () 메소드를 사용할 수 있습니다 . Collection을 인수로 받아들이고 세트는 Collection입니다.
List<String> mainList = new ArrayList<String>();
mainList.addAll(set);
편집 : 질문의 편집에 응답합니다.
그것은 당신이 갖고 싶어 것을 쉽게 알 수있다 Map
와 List
K 다른 값을 가질하기 위해, 값으로들, 당신은 K 다른 목록을 작성해야합니다.
따라서 :이 목록을 전혀 작성하지 않으려면 목록을 작성해야합니다.
가능한 해결책은 :
당신을 선언 Map
A와 Map<String,Set>
나 Map<String,Collection>
대신에, 그리고 당신의 세트를 삽입합니다.
답변
생성자를 사용하여 변환하십시오.
List<?> list = new ArrayList<?>(set);
답변
또한 Guava Collect 라이브러리에서 다음을 사용할 수 있습니다 newArrayList(Collection)
.
Lists.newArrayList([your_set])
이것은 객체 를 선언 (또는 인스턴스화) 할 필요가 없다는 점을 제외하고 는 amit 의 이전 답변과 매우 유사 list
합니다.
답변
Java 8에서는 다음과 같은 하나의 라이너를 사용할 수 있습니다.
List<String> list = set.stream().collect(Collectors.toList());
다음은 하나의 작은 예입니다.
public static void main(String[] args) {
Set<String> set = new TreeSet<>();
set.add("A");
set.add("B");
set.add("C");
List<String> list = set.stream().collect(Collectors.toList());
}
답변
가장 간단한 해결책
내 세트를 List로 변환하고 반환하는 매우 빠른 방법을 원했기 때문에 한 줄로
return new ArrayList<Long>(mySetVariable);
답변
이 한 줄 변경을 사용할 수 있습니다. Arrays.asList(set.toArray(new Object[set.size()]))
Map<String, List> mainMap = new HashMap<String, List>();
for(int i=0; i<something.size(); i++){
Set set = getSet(...);
mainMap.put(differentKeyName, Arrays.asList(set.toArray(new Object[set.size()])));
}
답변
나는 할것이다 :
Map<String, Collection> mainMap = new HashMap<String, Collection>();
for(int i=0; i<something.size(); i++){
Set set = getSet(...); //return different result each time
mainMap.put(differentKeyName,set);
}