Java 哪个更好?使用对应类数组的基元类型数组

Java 哪个更好?使用对应类数组的基元类型数组,java,arrays,generics,real-time,circular-buffer,Java,Arrays,Generics,Real Time,Circular Buffer,我正在尝试使用编写一个类,以便可以实现任何类型数据的循环缓冲区。我现在看到两种选择。首先,我使用泛型创建一个类,泛型类型将用于确定我要为循环缓冲区初始化的数组类型。在这里,我必须使用类的数组。其次,我创建了一个抽象基类来定义公共组件,并扩展该类以实现我想要使用的不同类型的缓冲区。例如,如果我想创建int类型的循环缓冲区实例,我可以在我的子类的实现中创建它。在这里,我可以使用基本数据类型来创建数组。我的应用程序是实时的,可以实时访问这些缓冲区。因此,我想知道哪一种是有效的解决方案。第二种方法的性能

我正在尝试使用编写一个类,以便可以实现任何类型数据的循环缓冲区。我现在看到两种选择。首先,我使用泛型创建一个类,泛型类型将用于确定我要为循环缓冲区初始化的数组类型。在这里,我必须使用
类的数组。其次,我创建了一个抽象基类来定义公共组件,并扩展该类以实现我想要使用的不同类型的缓冲区。例如,如果我想创建
int
类型的循环缓冲区实例,我可以在我的子
类的实现中创建它。在这里,我可以使用
基本数据类型
来创建数组。我的应用程序是实时的,可以实时访问这些缓冲区。因此,我想知道哪一种是有效的解决方案。

第二种方法的性能会更好,因为取消装箱和(特别是)自动装箱会影响性能

这些集合也将具有相当小的内存占用,因此这是另一个好处

这些原因就是为什么像GS Collections(我相信现在是Eclipse Collections)和Guava这样的集合框架包含其集合的原始实现


缺点是,您将有更多的代码要提前编写,并且您不会有一个可以在所有情况下使用的类。

第二种方法将执行得更好,因为取消装箱和(特别是)自动装箱会影响性能

这些集合也将具有相当小的内存占用,因此这是另一个好处

这些原因就是为什么像GS Collections(我相信现在是Eclipse Collections)和Guava这样的集合框架包含其集合的原始实现


缺点是,您将有更多的代码要提前编写,并且没有一个类可以在所有情况下使用。

基本体的装箱和拆箱类实例对性能的影响可能相当大,而且还不确定JIT是否能够可靠地优化它,从而在所有情况下消除装箱。如果您希望它对任何类型的数据都是通用的,则必须使用装箱原语,因为您不能在泛型中使用原语(但可以使用原语数组)。因此,创建我自己的boxed
int
类型的类比使用
Java.Lang.Integer
更好吗?另外,使用
基本数据类型的性能点是什么?您认为您的
java.lang.Integer
版本比“真实”版本有什么好处?java.lang.Integer是一个更大的对象,扩展了java.lang.Number,所以我猜装箱和拆箱的成本比创建自己的类要高一些。否?基本体的装箱和取消装箱类实例对性能的影响可能相当大,并且不确定JIT是否能够可靠地优化它以在所有情况下消除装箱。如果您希望它对任何类型的数据都是泛型的,您必须使用装箱基本体,因为您不能在泛型中使用基本体(不过,您可以使用基元数组).那么,创建我自己的装箱
int
类型类是否比使用
Java.Lang.Integer
更好?另外,使用
基本数据类型的性能点是什么?您认为您的
Java.Lang.Integer
版本比“real”有什么好处版本?好的,java.lang.Integer是一个更大的对象,它扩展了java.lang.Number,所以我想装箱和拆箱的成本比创建自己的类要高一些。不是吗?因为我不必为我的系统中的很多数据类型实现它,我想我会继续使用
基本类型对于我的系统中的许多数据类型,我想我将继续使用
基本类型