1
使用休眠我帶來了樣本表ANIMALS
的結果列表。 Hibernate的方法是這樣的:通過多個條件拆分列表
...
List<Animals> animalList= null;
try {
Query query = session.createQuery("SELECT * FROM animals ORDER BY COLOR , HEIGHT , AGRESSIVE; ");
animalList= query.list();
}
...
結果集的一個例子是以下幾點:
NAME COLOR HEIGHT AGRESSIVE
---------------------------------
JIMMY BLACK SHORT NO
RIPPER BLACK SHORT YES
GOOFY BLACK TALL NO
MURPHY BLACK TALL YES
PAUL WHITE SHORT NO
ROB WHITE SHORT YES
BOBBY WHITE TALL NO
JACK WHITE TALL YES
我的實際結果列表中有一個最低的10萬條記錄,從而解析列表,併爲執行list.add(..)
每個人都不是很明智; 我想要做的是將結果集分成8個小列表,其中包含COLOR
,HEIGHT
和AGGRESSIVE
的各個組合。 之後,列表將作爲參數提供給方法以執行一系列操作。
我只能使用Java 1.6或更低版本。 我的主要目標是從IndexOutOfBounds
措施,我把和IF's
瘋狂ammount的像逃跑以下幾點:
for (int i = 0; i < animalList.size(); i++) {
previousAnimal = animals.get(i-1);
currentAnimal = animals.get(i);
nextAnimal = animals.get(i+1);
...//extra code
IF (previousAnimal.getColor() != currentAnimal.getColor() || previousAnimal.getHeight() != currentAnimal.getColor() || previousAnimal.getAgressive() != currentAnimal.getAgressive())
...//extra code
IF (currentAnimal.getColor() != nextAnimal.getColor() || currentAnimal.getHeight() != nextAnimal.getColor() || currentAnimal.getAgressive() != nextAnimal.getAgressive())
...//extra code
如果你使用Java 8,你可以使用Stream API來完成。如果您使用的是Java 7或之前的版本,請使用類似quaere或類似的庫 –
過濾查詢,您可以使用Criteria of Criteria API – santiago92
或者將所有內容放在'MultiMap'中,並使用屬性元組的鍵使用一致的'hascode()'方法。 – dotvav