Creating an array of Sets in Java

I'm new to Java so I'm probably doing something wrong here, I want to create an array of Sets and I get an error (from Eclipse). I have a class:

public class Recipient { String name; String phoneNumber; public Recipient(String nameToSet, String phoneNumberToSet) { name = nameToSet; phoneNumber = phoneNumberToSet; } void setName(String nameToSet) { name = nameToSet; } void setPhoneNumber(String phoneNumberToSet) { phoneNumber = phoneNumberToSet; } String getName() { return name; } String getPhoneNumber() { return phoneNumber; } } 

and I'm trying to create an array:

Set<Recipient>[] groupMembers = new TreeSet<Recipient>[100]; 

The error I get is "Cannot create a generic array of TreeSet"

What is wrong ?

2

3 Answers

From :

you cannot instantiate an array of a generic type (new List<String>[3] is illegal), unless the type argument is an unbounded wildcard (new List<?>[3] is legal).

Rather than using an array, you can use an ArrayList:

List<Set<Recipient>> groupMembers = new ArrayList<Set<Recipient>>(); 

The code above creates an empty ArrayList of Set<Recipient> objects. You would still have to instantiate every Set<Recipient> object that you put into the ArrayList.

3

Arrays don't support Generics. Use an ArrayList:

ArrayList<Set<Recipient>> groupMembers = new ArrayList<Set<Recipient>>(); 

You might want to consider using Guava's Multimap where the key is the index. This will handle creating the Sets for each index as you need them.

SetMultimap

SetMultimap<Integer, Recipient> groupMembers; 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like