Comment ajouter un Tableau dans Réglée correctement?
Je vais essayer d'ajouter dans le tableau Entier dans le Set suivant,
int[] arr = { 2, 6, 4 , 2, 3, 3, 1, 7 };
Set<Integer> set = new HashSet<Integer>(Arrays.asList(arr));
J'obtiens une erreur disant que la suite,
myTest.java:192: error: no suitable constructor found for HashSet(List<int[]>)
Set<Integer> set = new HashSet<Integer>(Arrays.asList(arr));
^
constructor HashSet.HashSet(Collection<? extends Integer>) is not applicable
(argument mismatch; inferred type does not conform to upper bound(s)
inferred: int[]
upper bound(s): Integer,Object)
constructor HashSet.HashSet(int) is not applicable
(argument mismatch; no instance(s) of type variable(s) T exist so that List<T> conforms to int)
where T is a type-variable:
T extends Object declared in method <T>asList(T...)
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error
Deuxièmement, je tente également comme suit et encore avoir d'erreur,
int[] arr = { 2, 6, 4 , 2, 3, 3, 1, 7 };
Set<Integer> set = new HashSet<Integer>( );
Collections.addAll(set, arr);
Comment ajouter un tableau d'Entiers en Java correctement ? Merci.
Essayez
new HashSet<>(Arrays.asList(2, 6, 4 , 2, 3, 3, 1, 7))
.OriginalL'auteur Arefe | 2015-12-27
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour utiliser le wrapper type à utiliser
Arrays.asList(T...)
ou ajouter les éléments manuellement comme
Enfin, si vous avez besoin de conserver l'ordre d'insertion, vous pouvez utiliser un
LinkedHashSet
.OriginalL'auteur Elliott Frisch
Noter que les tableaux en java sont
Objects
doncArrays.asList(int[])
en interne envisagerint[]
comme un seul élément. Donc,<T> List<T> asList(T... a)
permettra de créerList<int[]>
au lieu deList<Integer>
et donc vous ne pouvez pas créerSet<Integer>
de la collection de tableau (pasInteger
éléments).Des solutions possibles pourrait être, il suffit d'utiliser
Integer
(classe wrapper) au lieu deint
(type primitif).(Ce qui est déjà indiqué parElliott Frisch
).Si vous utilisez
Java-8
et seint[]
et ne peuvent pas changer deInteger[]
,En outre, comme l'a souligné
Louis Wasserman
, si vous utilisezjava-8
vous pouvez directement récupérer les éléments du tableau à laSet
.Arrays.stream(arr).boxed().collect(toSet())
plutôt que de passer par le tableau.Bon Point.
OriginalL'auteur CoderCroc
Vous voulez insérer dans
Set
int
valeurs, mais votreSet
magasinsInteger
.Changement
int[] arr = { 2, 6, 4, 2, 3, 3, 1, 7 };
à
Aussi que vous allez créer un Ensemble de tableaux d'Entiers, n'oubliez pas que les Entiers ont un pool de cache pour l'Entier de l'aire de
-127 to +128
. Tout Entier les objets de valeur au sein de cette gamme se référer aux mêmes objets dans la piscine. Donc pas de nouvelles de la mémoire allouée pour les Entiers dans l'Ensemble.OriginalL'auteur Azat Nugusbayev