在Java中创建集合数组

时间:2011-11-03 17:23:11

标签: java

我是Java的新手,所以我可能在这里做错了, 我想创建一个Sets数组,我得到一个错误(来自Eclipse)。 我有一节课:

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;
}
}

我正在尝试创建一个数组:

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

我得到的错误是“无法创建TreeSet的通用数组”

有什么问题?

3 个答案:

答案 0 :(得分:15)

来自http://www.ibm.com/developerworks/java/library/j-jtp01255/index.html

  

你不能实例化泛型类型的数组(new List<String>[3]是非法的),除非type参数是一个无界的通配符(new List<?>[3]是合法的)。

您可以使用ArrayList

,而不是使用数组
List<Set<Recipient>> groupMembers = new ArrayList<Set<Recipient>>();

上面的代码会创建一个空ArrayListSet<Recipient>个对象。您仍然需要实例化放入Set<Recipient>的每个ArrayList对象。

答案 1 :(得分:0)

数组不支持泛型。使用ArrayList

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

答案 2 :(得分:0)

您可能需要考虑使用Guava的Multimap,其中键是索引。这将根据您的需要处理为每个索引创建集合。

SetMultimap

SetMultimap<Integer, Recipient> groupMembers;