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

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

Maya Lin-Takahashi

Maya Lin-Takahashi

Consumer Tech & Gadget Reviewer

Maya is a hardware enthusiast who tests and reviews smart home devices, smartphones, wearables, and audio gear. She focuses on practical consumer value and build quality.

Share this article
Twitter Facebook Pinterest