Рассмотрим, у меня есть три столбца значений следующим образом:
Col-A Col-B Values
1 2 9
3 4 9
5 6 9
1 2 8
5 6 8
3 4 7
1 2 7
5 6 10
1 2 10
1 3 10
1 4 10
Так что в приведенном выше наборе значений, (1,2) в (Col-A и Col-B) имеет весь наборзначения (то есть 9,8,7 и 10), в то время как другие, как 3,4;5,6 не имеют всех значений.Я хочу получить только (1,2) с вышеуказанными данными.
Я подумал о том, чтобы попробовать это с помощью Hashtables, добавить (ColA, ColB) к отдельному объекту и использовать Hashtable, ключом которого является объект, а значением является столбец «Значения».т. е.
Class K
{
int a;
int b;
}
Hashtable<K,int> numbers = new Hashtable<K,int>();
Добавление каждой строки в хеш-таблицу и, когда будет найден повторяющийся ключ, увеличить счетчик.На последнем этапе проверьте, равняется ли количество числу различных значений в столбце «Значения».
Но я не могу понять, как выполнить итерацию для каждого значения в значениях, т. Е. 9,8,7,10.Есть ли лучший способ сделать это.
[править] После реализации метода dasblinkenlight в Java:
ArrayList<Double> list;
Hashtable<K,ArrayList<Double>> numbers = new Hashtable<K,ArrayList<Double>>();
while((line = brMyHashval.readLine()) != null)
{
if(!(line.isEmpty()))
{
String[] temp;
temp = line.split(" ");
eDouble = Double.parseDouble(temp[5].toString());
Val key = new Val(Double.parseDouble(temp[0].toString()) ,Double.parseDouble(temp[1].toString()) );
if(!(numbers.containsKey(key)))
{
list = new ArrayList<Double>();
numbers.put(key, list);
}
else
{
list = numbers.get(key);
}
list.add(eDouble);
}
}
Но каждый раз элемент управления переходит в цикл if.Он никогда не переходит в другую часть, даже если ключ тот же.В Java идентификатор связывается с каждым ключом.Так же он проверяет идентификатор или значения в объекте «ключ».
Итерация 1: ключ (id = 52) x = 1, y = 2
Итерация 2: ключ (id = 53) x = 3, y = 4
Итерация 3: ключ (id = 55) x = 5, y = 6
Итерация 4: ключ (id = 56) x = 1, y = 2