HashSet
如何获得初始容量?
import java.util.*;
import java.lang.reflect.Field;
public class Demo
{
static int getCapacity(ArrayList<?> l) throws Exception
{
Field dataField = ArrayList.class.getDeclaredField("elementData");
dataField.setAccessible(true);
return ((Object[]) dataField.get(l)).length;
}
public static void main(String args[])
{
ArrayList a = new ArrayList();
System.out.println(getCapacity(a));
HashSet h = new HashSet(); //in case HashSet what we do
System.out.println(h.capacity());
}
}
实际上我们在HashSet
课程中没有容量法。那么我们如何获得HashSet
的容量?我们如何获得HashSet
对象的初始容量?
答案 0 :(得分:1)
HashSet
不会公开该信息。您可以根据需要自行设置初始容量(例如HashSet h = new HashSet(22);
)。 javadoc表示默认容量为16
。
在内部,HashSet
只是通过HashMap
字段包裹HashSet.map
。我想你可以使用反射来获取map
字段,然后查询它以获得初始容量。我不明白你为什么要这样做。