Я ищу тип данных, который может хранить как строку, так и двойник для ведения записей. Строка - это некоторый пароль, а двойная - некоторая оценка для этого пароля, определяемая после вставки пароля в структуру данных. Какой тип данных лучше всего подойдет для такой ситуации?
До сих пор я использовал ArrayList
s, по одному на каждый бит данных, но дошло до того, что мне нужно реализовать сортировку поодна часть и логистика мне не особо нравятся.
Например:
private ArrayList<String> keys = ArrayList<String>();
private ArrayList<Double> scores = ArrayList<Double>();
// n and m determined at runtime
private void generateKeys(int m, int n) {
for (int i = 0; i < m; i++) {
keys.add(getRandomKey(n));
}
}
private String getRandomKey(int n) {
String key = "";
String charValues = "abcdefghijklmnopqrstuvwxyz";
int randIndex;
for (int i = 0; i < n; i++) {
randIndex = random.nextInt(26);
key += charValues.charAt(randIndex);
}
return key;
}
private void generateScores() {
for (int i = 0; i < size(keys); i++) {
scores.add(findScore(keys.get(i)));
}
}
private double findScore(String k) {
// some function
}
Примером данных будет:
key score
"fsuifshu", 0.950
"wowaflsa", 0.120
"woawfjff", 0.430
"fireplfd", 0.040
...
key
вставляется сначала с использованием цикла и генератора случайных символов, затем score
вычисляется после того, как каждый key
уже вставлен. Я хочу иметь возможность перемещать их (сортировка на основе score
).
В конечном счете, я хочу иметь возможность сортировать ключи на основе их оценки. Таким образом, ожидаемый результат, основанный на вышеупомянутом, будет:
"fsuifshu"
"woawfjff"
"wowaflsa"
"fireplfd"
Сортированный ArrayList будет содержать это, например.