/*
* ARX: Powerful Data Anonymization
* Copyright 2012 - 2017 Fabian Prasser, Florian Kohlmayer and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.deidentifier.arx.aggregates;
import java.util.Iterator;
/**
* A contingency table.
*
* @author Fabian Prasser
*/
public class StatisticsContingencyTable {
/**
* An entry in the contingency table.
*
* @author Fabian Prasser
*/
public static class Entry {
/** Index of the value from the first column. */
public int value1;
/** Index of the value from the second column. */
public int value2;
/** Associated frequency. */
public double frequency;
/**
* Internal constructor.
*
* @param value1
* @param value2
*/
Entry(int value1, int value2){
this.value1 = value1;
this.value2 = value2;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
StatisticsContingencyTable.Entry other = (StatisticsContingencyTable.Entry) obj;
if (value1 != other.value1) return false;
if (value2 != other.value2) return false;
return true;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + value1;
result = prime * result + value2;
return result;
}
}
/** The data values from the first column, sorted. */
public final String[] values1;
/** The data values from the second column, sorted. */
public final String[] values2;
/** The total number of entries in the contingency table. */
public final int count;
/** Maximal frequency in the contingency table. */
public final double maxFrequency;
/** An iterator over the elements in the contingency table. */
public final Iterator<StatisticsContingencyTable.Entry> iterator;
/**
* Internal constructor.
*
* @param value1
* @param value2
* @param count
* @param maxFrequency
* @param iterator
*/
StatisticsContingencyTable(String[] value1, String[] value2, int count,
double maxFrequency, Iterator<StatisticsContingencyTable.Entry> iterator) {
this.values1 = value1;
this.values2 = value2;
this.count = count;
this.maxFrequency = maxFrequency;
this.iterator = iterator;
}
}