如果要替换 List,可以使用 TByteArrayList 代替。如果你想替换 List where MyClass { int a; T 对象;您可以改用 TIntObjectHashMap。
如果您想用两个必须排序的字段或三个或更多字段替换某些内容,您需要实现自己的类来包装数组以保存数据。这是使用基于列的表模型。
例如
class MyClass {
byte b;
int i;
String s;
}
class MyClassList {
int size = 0;
int capacity;
byte[] bytes;
int[] ints;
String[] strings;
MyClassList(int capacity) {
this.capacity = capacity;
}
public void add(MyClass myClass) {
if (size == capacity) resize();
bytes[size] = myClass.b;
ints[size] = myClass.i;
strings[size] = myClass.s;
size++;
}
public void get(MyClass myClass, int index) {
if (index > size) throw new IndexOutOfBoundsException();
myClass.b = bytes[index];
myClass.i = ints[index];
myClass.s = strings[index];
}
}
从 Java 5.0 开始,自动装箱缓存是享元的示例。
Integer i1 = 1;
Integer i2 = 1;
System.out.println(i1 == i2); // true, they are the same object.
Integer i3 = -200;
Integer i4 = -200;
System.out.println(i3 == i4); // false, they are not the same object.
如果您想阅读代码,请查看您的 IDE 中的 Integer.valueOf(int) 或
http://www.docjar.com/html/api/java/lang/Integer.java.html第 638 行
编辑: Integer 的自动装箱使用 IntegerCache 这是一个集合。ArrayList 是一个包装数组并具有大小的类...
private static class IntegerCache {
static final int high;
static final Integer cache[];