Я пытаюсь реализовать Incognito k-anonymization algorithm в Java. Часть этого алгоритма - это построение частоты для данной таблицы. Столбцы таблицы меняются каждый раз, поэтому я решил представить таблицу как ArrayList объекта [], где Object [] size - количество столбцов. В этом объекте я сохраняю значения каждой строки для каждого столбца.Построение таблицы частот объектов в ArrayList <Object[]>
Я пытаюсь построить таблицу частот, используя следующий метод:
ArrayList<Object[]> table = new ArrayList<Object[]>();
....// table filling//.....
ArrayList<Object[]> frequencySet = new ArrayList<Object[]>();
for(int i=0;i<table.size();i++)
{
Integer count = 1;
int j = 0;
for(j=i+1;j<table.size();j++)
{
if(Arrays.equals(table.get(i), table.get(j)))
{
//System.out.println(i+" equals to "+j);
count++;
table.remove(j);
j = j-1;
}
}
int size = arguments.size()+1;
Object[] anObject = new Object[size];
System.arraycopy(table.get(i), 0, anObject, 0, arguments.size());
anObject[size-1] = count;
frequencySet.add(anObject);
}
Проблема заключается в том, что алгоритм очень медленно, и я понял, что большую часть времени расходуется в этом методе. (Для 100 000 данных требуется 13мин для запуска - я не знаю, нормально ли это). Есть ли более быстрый способ построения таблицы частот?
Если у вас есть номер столбца в качестве последнего элемента, каждый столбец будет отличаться, и вы можете просто взять глубокую копию колонн. –