如何在java中使用循环定义多个集合?

如何在java中使用循环定义多个集合?,java,loops,treeset,Java,Loops,Treeset,我想定义数千个树集。我如何使用某种循环来实现这一点?我已经尝试了下面的代码,但它给了我“复制局部变量”错误 //字符串名\u数组[]={jason、jack、katia、michael……}这里有很多名字 对于(intz=0;z

我想定义数千个树集。我如何使用某种循环来实现这一点?我已经尝试了下面的代码,但它给了我“复制局部变量”错误

//字符串名\u数组[]={jason、jack、katia、michael……}这里有很多名字
对于(intz=0;z<2000;z++){
字符串nameofset=namesarray[z];
TreeSet name of set=新树集();
}

编辑:我想需要更多的解释。我想用不同的名称创建不同的集合,其中每个名称都是列表中的某个字符串,例如jason、jack…

在for循环中有两个名为
nameofset
的变量。在代码中进行以下更改-

for(int z=0;z<2000;z++){
   String nameString =namesarray[z];                     
   TreeSet<String> nameofset = new TreeSet();
}

对于(int z=0;z您必须考虑一种数据结构,在其中存储数千个树集。例如,地图:

Map<String, Set<String>> namedSets = new HashMap<>();
String[] names = { "jason", "jack", "katia", "michael"};
for(String name : names) {            
    namedSets.put(name , new TreeSet<String>());
}
Map namedSets=newhashmap();
String[]name={“jason”、“jack”、“katia”、“michael”};
对于(字符串名称:名称){
namedset.put(name,new TreeSet());
}
要获取特定集合,请执行以下操作:

Set<String> jacksSet = namedSets.get("jack");
Set jackset=namedset.get(“杰克”);

您必须将
TreeSet
对象创建和分配给变量分为两个单独的步骤。在循环中,您只能创建对象,但不能尝试一次又一次地分配给同一个引用变量-显然,这是一个错误。您需要一个
ArrayList
来保存这些对象。以后,您可以分配这些对象无论您希望引用什么,都可以引用ects

另外,当您可以从
ArrayList
通过索引访问这些对象并根据需要分配给任何引用时,您为什么需要使用不同的变量名作为开始,这一点也不清楚。

您有以下代码:

  String nameofset = namesarray[z];                     
  TreeSet<String> nameofset = new TreeSet();
stringnameofset=namesarray[z];
TreeSet name of set=新树集();

您创建了两个名称完全相同的变量。
TreeSet
对象的定义引发了异常,因为在它上面使用了局部变量名。您应该使用不同的名称,我想知道您将如何处理
字符串
变量,因为它在其作用域中未使用。

OP想要创建多个树具有不同名称的集合。因此,这将创建具有相同名称的树集。我想我想要的是非常简单的。我想为每个名称创建不同的集合(不同的名称)。例如:set michael=new TreeSet();set jason=new TreeSet();..…您不希望使变量名依赖于数据。最接近的是名称为键并设置为值的映射,请参阅更新的答案。您确定代码有效吗。因为第一行显示“类型不匹配:无法从ArrayList转换为Map”是的,对不起,那应该是一个HashMap。请参阅更新的答案。顺便说一句,你打算在集合中存储什么?或者这超出了这个问题的范围?你的解决方案不是我想要的答案,但它是有效的。我将在这些集合中存储字符串。在你的代码中,你将声明两个同名的变量
String nameofset
TreeSet nameofset
。我建议您重命名第二个变量。而且
String nameofset
在您的代码中似乎未使用。我的意思是您为它指定一个值,但之后没有对此变量的引用。我想创建具有不同名称的不同集合,其中每个名称都是列表中的某个字符串,例如jason、jack。…您想使用namesarray(或names_数组,不清楚)中的名称。您想将这些名称存储在哪里?namesarray是一个数组而不是列表。您想要一个包含从数组中提取的字符串对象的树集吗?它是1000行程序。如果您确实需要解释为什么我需要不同的变量名,我可以解释,但这将是一个很长的注释基本上,您要求创建一个新的引用nce变量,这是不可能的。最近的是Adriaan Koster的解决方案。之前有人问过这个问题,
  String nameofset = namesarray[z];                     
  TreeSet<String> nameofset = new TreeSet();