List を置き換えたい場合は、代わりに TByteArrayList を使用できます。List where MyClass { int a; を置き換えたい場合 T オブジェクト。代わりに TIntObjectHashMap を使用できます。
順序付けが必要な 2 つのフィールドまたは 3 つ以上のフィールドで何かを置き換えたい場合は、配列をラップしてデータを保持する独自のクラスを実装する必要があります。これは、列ベースのテーブル モデルを使用しています。
例えば
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 以降、自動ボクシング キャッシュは flyweights の例です。
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を見てください。
編集: 整数のオートボクシングは、コレクションである IntegerCache を使用します。ArrayList は、配列をラップし、サイズを持つクラスです...
private static class IntegerCache {
static final int high;
static final Integer cache[];