- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
public class CountUnique {
//here objects will be stored
private Object[] variants;
//temporaly array to store copying variants
private Object[] temparr;
private int total = 0;
public CountUnique() {}
public boolean test(Object obj) {
total++;
boolean hasSame = false;
if(variants == null) {
variants = new Object[1];
variants[0] = obj;
hasSame = false;
} else {
for(int i = 0; i < variants.length; i++) {
if(variants[i] == null) {} else {
if(variants[i].equals(obj)) {
hasSame = true;
break;
}
}
}
if(hasSame == false) {
temparr = variants;
variants = new Object[temparr.length+1];
for(int i = 0; i < temparr.length; i++) {
variants[i] = temparr[i];
}
variants[temparr.length] = obj;
temparr = null;
}
}
return hasSame;
}
public int unique() {
if(variants == null) {
return 0;
} else return variants.length;
}
public int total() {
return total;
}
public void free() {
variants = null;
temparr = null;
}
}
некий класс для подсчета уникальных обьектов.
особенно умиляет функция test()
guest 26.02.2010 15:01 # −3.2
альзо, #define boolean bool это самый настоящий БУЛЬ-ЩИТ
guest 26.02.2010 15:21 # +1
guest 27.02.2010 09:37 # 0
ArrayList с его буфером для того, чтобы не создавать новый массив на каждый новый элемент, придумали трусы )
Перепишем же всю память, создавая новые массивы и убивая старые, и будем тратить время на ручное копирование массива вместо System.arrayCopy()!
guest 21.03.2010 00:38 # 0
danilissimus 21.03.2010 10:08 # 0