ここではnoobなので、残念です。Java:ArrayListの文字列をイテレータに一致させ、同じインデックスの別のArrayListの整数を増やす
私はArrayList内の文字列を、Setsのイテレータ内の文字列の反復子と比較します。一致するものが見つかると、ArrayList内の一致する文字列のインデックスを取得し、別のArrayListの整数でその同じインデックスを増やしたいと考えています。私はそれがうまくいくような(私に)見えるものがありますが、このコードが実行された後、私の整数ArrayListは、ほとんど2,3の2,1、および0を含みます。
私のコードを最初に修正することに興味があります私はソーシャルネットワークのキーがユーザー名であるマップを持っています。その値は、ユーザーが従うユーザーのユーザー名を設定したものです。フォロワーの降順ですべてのユーザー名のリストを返す必要があります。
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> map = HashMap >();' mapに値がありません –