我们如何获得HashSet的初始容量?

时间:2014-04-19 14:31:21

标签: java hashset

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对象的初始容量?

1 个答案:

答案 0 :(得分:1)

HashSet不会公开该信息。您可以根据需要自行设置初始容量(例如HashSet h = new HashSet(22);)。 javadoc表示默认容量为16

在内部,HashSet只是通过HashMap字段包裹HashSet.map。我想你可以使用反射来获取map字段,然后查询它以获得初始容量。我不明白你为什么要这样做。