2014-09-23 2 views
0
import java.util.HashSet; 
import java.lang.reflect.Array; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collection; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Set; 
import java.awt.*; 

public class hash { 

    public static void main(String[] args) { 
     int[] paco = { 1, 2, 3, 4, 5, 5 }; //an array with duplicate items for the set 
     Arrays.asList(paco); 

     Set<Integer> set = new HashSet<Integer>(paco); 

    } 

} 

이것은 목록에서 hashSets를 만드는 데 익숙해지기위한 간단한 연습입니다. 생성자 HashSet의 INT ([]) 정의되지생성자 HashSet <Integer> (int [])이 정의되지 않았습니다.

+0

그리고 이것에 대해 비정상적인 것은 무엇입니까? 실제로 javadoc에는 그러한 생성자가 없습니다. – Dici

답변

3

대신 : 그 HashSet의로 변환하려고 후 먼저 I 그러나 I가 다음 오류,리스트로 변환 된 후, 어레이를 제조 배열을 만든 다음 목록을 만들고, 당신의 가치에서 직접 목록을 만들 :

List<Integer> paco = Arrays.asList(1, 2, 3, 4, 5, 5); 
Set<Integer> set = new HashSet<Integer>(paco); 

다른 문제는 어디서든 Arrays.asList의 반환 값을 저장하지 않은 것이 었습니다.

int[]에서 Arrays.asList(paco)을 시도하면 단일 요소로 List<int[]> (int 배열 목록)을 반환합니다. 그건 세트를 초기화하는 데 사용할 수 없습니다. 당신이 정말로 또한 세트에 추가하여 값의 배열을 갖고 싶어

대신, 당신은 그들이 박스되도록 할 것이다, Integer보다는 int로를 선언 할 수 있습니다 다음 Arrays.asList 그들로부터 List<Integer>을 만듭니다 List<int[]>의 :

Integer[] paco = { 1, 2, 3, 4, 5, 5 }; 
Set<Integer> set = new HashSet<Integer>(Arrays.asList(paco)); 

당신이 다음과 같은 방식으로 ArrayUtils from Apache Commons와 함께 할 수있는 Integer[] 내로 int[]을 변환해야하는 경우 :

Integer[] boxedArray = ArrayUtils.toObject(primitiveArray); 

팁을 주신 Tomek에게 감사드립니다.

+0

당신의 답을 +1하십시오. 프리미티브의 배열을 해당 래퍼 객체의 객체 배열로 변환하는 쉬운 방법을 알고 계십니까? –

+1

Integer [] newArray = ArrayUtils.toObject (oldArray); http://commons.apache.org/proper/commons-lang/에서 – Tomek

관련 문제