繁体   English   中英

如何从ResultSet行中的列获取int []数组?

[英]How get int[] array from column in rows of ResultSet?

我正在使用以下方式将ResultSet int值放入int数组中。 这似乎效率很低,但是我无法弄清楚如何在不知道大小的情况下获取原始int数组。

List<Integer> ints = ArrayList<Integer>();

while ( results.next ) ints.add( results.getInt( "id" );

int[] intsArray = new int[ ints.size() ];
for ( int i = 0; i < ints.length; i++ ) int[ i ] = ints.get( i ); //auto-boxes here

我需要将它们作为原始数组,因为这是方法所需要的。

如果您不知道从结果集中读取的值的数量,那么您真的无法避免使用列表。

但是,如果您有一个列表类可以存储原始int值,例如TIntList 项目的 TIntList ,则可以避免使用List<Integer>

最后,在花费过多精力解决该问题之前,您应该真正衡量使用中间Integer对象对性能的影响。

ArrayList转换为数组

您将不得不猜测初始大小,然后在填充数组的最后一个元素时调整数组的大小,并在遍历结果集时根据需要重复进行。

此行为正是ArrayList已经为您提供的。 但是已经调试好了。 ;-)

因此,只需使用ArrayList<Integer> 最后转换为数组。

您可能会考虑使用Collection::toArray 但是该实用程序只能返回对象数组,而不能返回原语。

有关转换为基元数组的几种好方法,请参见此问题

我的选择是致电Google Guava 虽然为此目的添加Guava可能有点过头,但Guava是如此有用,以至于我默认将库添加到大多数新Java项目中。

List< Integer > list = ... ;
int[] values = Ints.toArray( list ) ;

如果您的部署环境的内存非常紧张,或者您的元素数量非常多,或者您经常执行此操作以至于影响性能,那么只有这样,我才求助于手动填充和调整数组int的大小。你自己。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM