java 多个set写出数组形式

java新手,问下能否将多个set定义为一个数组形式,
例如:Set<String>[] read; 我这样写出来不报错,但是怎么初始化这个数组呢,就是在调用read[1]时会提示nullpointerException。 急,在线等
我的问题是这样的: 定义 private Set<Read>[] readSet; 然后 for(int i=0;i<10;i++){
readSet[i]=new HashSet<Read>();
}对么? Read是我自己写的一个类,很简单的,应该没问题,怎么老是报nullpointerException

按五楼的说法,会报错:Cannot create a generic array of HashSet<String>

Set [] tset=new HashSet[1024];
HashSet是Set的实现类。Set是接口,所以不能实例化。不过set的数组推荐使用List集合而不是数组,把Set都方入一个List中。java中数组和List基本上是一样的。但List使用起来更方便一些。个人见解。
空指针异常是你需要读取的内存中没有这个对象。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-03
您是要定义set方法吗?
是定义一个集合吗?
请说清楚。
nullpointerException
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:

调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。
应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。
第2个回答  2009-03-03
先定义:

int len = 10;//长度根据你的需要而定
Set<String>[] read = new Set[len];

然后就不会异常了
第3个回答  2009-03-03
您这里主要的错误是因为您只是单纯的声明了一个set集合,请注意,这里的集合中并没有真实的对象,生命之后,您需要给每一个对象进行实例化。例如:
Set[0] read=new Set();
Set[1] read=new Set();

当然,您也有更加简便的方法加以运用,比如利用循环来实现,这完全取决于您的业务逻辑。
第4个回答  推荐于2016-02-12
Set转换成数组可以使用Set的toArray方法,返回一个Object数组。
1、如果List或Set中元素的类型都为A,那么可以使用带参数的toArray方法,得到类型为A的数组,具体语句是“(A[])set.toArray(new A[0])”。
2、 数组转换成List可以使用Arrays的asList静态方法,得到一个List。
3、数组转化成Set时,需要先将数组转化成List再用List构造Set。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class TestCollectionToArray {

public static void main(String[] args) {
Set set = new HashSet();
set.add("a");
set.add("b");
// 将set转换为数组
array = set.toArray();
array1 = (String[]) set.toArray(new String[0]);
array2 = (String[]) set.toArray(new String[set.size()]);
System.out.println("从Set转换成的对象数组长度为:" + array.length);
System.out.println("从Set转换成的字符串数组长度为:" + array2.length);
// 数组转换成Set
// 将数组转换成List后,再用List构造Set
set = new HashSet(Arrays.asList(array));
System.out.println("将数组转换成Set的元素个数为:" + list.size());
// 将Set清空,然后把数组转换成的list全部add
set.clear();
set.addAll(Arrays.asList(array1));
System.out.println("将数组转换成Set的元素个数为:" + list.size());
}
}
相似回答