noob здесь, извините, если я скажу что-нибудь немое.Java: сопоставление строк ArrayList с итератором и приращение целых чисел другого ArrayList с тем же индексом
Я сравниваю строки в ArrayList с итератором строк в итераторе наборов. Когда я нахожу совпадение, я хочу захватить индекс совпадающей строки в ArrayList и увеличить этот же индекс в другом массиве ArrayList. У меня есть что-то, что выглядит (мне), как будто оно должно работать, но после этого кода мой целочисленный ArrayList содержит в основном -1 с несколькими 2,1 и 0.
Я заинтересован в исправлении кода , но мне также были бы интересны разные подходы, поэтому вот более общая картина: у меня есть карта, где ключи являются именами пользователей в социальной сети, а значения задают имена пользователей, за которыми они следуют. Мне нужно вернуть список всех имен пользователей в порядке убывания последователей. В приведенном ниже коде я только пытаюсь сделать ArrayList строк (который содержит все имена пользователей в карте), что соответствует с другим ArrayList целых чисел, как:
usernamesList ... numberOfFollowers
theRealJoe ... 7
javaNovice ... 3
FakeTinaFey ... 3
и т.д.
Map<String, Set<String>> map = new HashMap<String, Set<String>>();
//edit: this map is populated. It's a parameter of the method I'm trying to write.
List<String> usernamesList = new ArrayList<String>();
//populate usernamesList with all strings in map
Iterator<Set<String>> setIter = map.values().iterator();
Iterator<String> strIter;
int strIterIndex = 0;
int w = 0;
List<Integer> numOfFollowers = new ArrayList<Integer>();
//initialize all elements to 0. not sure if necessary
for (int i = 0; i < usernamesList.size(); i++) {
numOfFollowers.add(0);
}
while (setIter.hasNext()) {
Set<String> currentSetIter = setIter.next();
strIter = currentSetIter.iterator();
while (strIter.hasNext()) {
String currentstrIter = strIter.next();
if (usernamesList.contains(currentstrIter)) {
strIterIndex = usernamesList.indexOf(currentstrIter);
numOfFollowers.set(strIterIndex, numOfFollowers.indexOf(strIterIndex) +1);
w++;
System.out.println("if statement has run " + w + " times.");
} else {
throw new RuntimeException("Should always return true. all usernames from guessFollowsGraph should be in usernamesList");
}
}
}
Вы карта не имеет значения, так что этот код 'while (setIter.hasNext()) {' не будет введено в –
На карте действительно есть ключи и значения. Извините, если это сбивает с толку. Я включил конструктор карты, чтобы вы знали, как была вызвана моя карта. – ScorchConway
'Карта> map = HashMap >();' map не имеет значений –