具有超过max int元素的Java集实现

具有超过max int元素的Java集实现,java,set,max,Java,Set,Max,是否存在可以处理超过MAX_INT元素的Java集的实现。我知道一个集合可以存储超过MAX_INT的元素,但例如HashSet的size方法只返回一个INT。因此我正在寻找一个集合的现成实现,它实际上可以处理超过MAX_INT的元素 或者,我必须自己实现这样一个集合,但可能已经有了实现 致以最良好的祝愿, 本杰明你有多少内存?8GB;集合应该只存储对对象的引用,而不是对象本身。这是一个笛卡尔积问题。我希望8GB以上就足够了。一个引用需要4个字节。Integer.MAX_值为2^31-1。因此,要

是否存在可以处理超过MAX_INT元素的Java集的实现。我知道一个集合可以存储超过MAX_INT的元素,但例如HashSet的size方法只返回一个INT。因此我正在寻找一个集合的现成实现,它实际上可以处理超过MAX_INT的元素

或者,我必须自己实现这样一个集合,但可能已经有了实现

致以最良好的祝愿,
本杰明

你有多少内存?8GB;集合应该只存储对对象的引用,而不是对象本身。这是一个笛卡尔积问题。我希望8GB以上就足够了。一个引用需要4个字节。Integer.MAX_值为2^31-1。因此,要存储2^31个引用,并且仅此而已,您已经需要2^31*4个字节,相当于8GB的RAM。因此,如果您为集合本身和所有引用的对象添加所需的内存,则需要比现有内存多得多的内存。那么拥有这么大的一套有什么意义呢?您可能需要一个数据库。数据库会减慢迭代。一般来说,您是对的,但我使用Google Guava Sets.cartesianProduct方法来创建笛卡尔产品。在java源代码中,他们描述了:性能说明:虽然大小为m,n,p的集合的笛卡尔积是大小为m x n x p的集合,但其实际内存消耗要小得多。当构造笛卡尔集时,输入集仅被复制。只有在对结果集进行迭代时,才会创建单独的列表,并且这些列表在迭代后不会保留。所以内存不是问题。所以我只想要一个更大的集合。如果你已经准备好不再有一个标准集合,你只需要迭代笛卡尔积,那么你为什么不自己实现这个迭代呢?