NoSuchElementException
package chapter08;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
public class Demo03 {
public static void main(String[] args) {
String[] str = {"a","b","a","b","c","a","b","c","b"};
HashMap hm = new HashMap();
HashSet hs = new HashSet();
for (int i = 0; i < str.length; i++) {
hs.add(str[i]);
}
int size = hs.size();
int[] num = new int[size];
Iterator it = hs.iterator();
int k = 0;
System.out.println(str.length);
while(it.hasNext()){
Object obj = it.next();
for (int i = 0; i < str.length; i++) {
if(obj.equals(str[i])){
num[k]++;
}
}
k++;
}
it = hs.iterator();
for (int i = 0; i < k; i++) {
hm.put(it.next(),num[i]);
}
System.out.println(hm);
/*while(it.hasNext())
{
for(int j = 0; j <str.length; j++){
System.out.println(str[j]);
if(str[j].equals(it.next())){
num[k]++;
}
}
k++;
}
k = 0;
while(it.hasNext()){
hm.put(it.next(),num[k]);
k++;
}
System.out.println(hm);
//System.out.println(size);
// System.out.println(hs);*/
}
}
注释的地方发生NoSuchElementException异常,原因是再判断it.next().equals(str[i])时, 一直调用it.next();已经不是同一个元素了。再将it.next()赋值给obj之后,再将其与数组元素比较可以解决这个问题。NoSuchElementException:没有元素可以迭代。