来吧,有问题了,大家共同进步
package start;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class TestSet {
Map<String,Student> mt = new HashMap<String,Student>();
Scanner Input = new Scanner(System.in);
public void addElement(){
int i = 0;
while(i < 3){
System.out.println("请输入学生ID:");
String id = Input.next();
if(mt.get(id) == null){
System.out.println("请输入学生姓名:");
String name = Input.next();
Student newstudent = new Student(id,name);
System.out.println("学生信息成功存入档案!");
mt.put(id, newstudent);
i++;
}else{
System.out.println("学生ID已经被占用!!");
continue;
}
}
}
public void getElement(){
Set<String> set = new HashSet();
set = mt.keySet();
for (String string : set) {
Student test = mt.get(string);
if(test != null)
System.out.println("学生姓名为:"+test.Name);
}
}
public void Remove(){
System.out.println("请输入你要删除的学生ID:");
String Id = Input.next();
Set<String> set = new HashSet();
set = mt.keySet();
for ( String key : set) {
if(Id.equals(key))
mt.remove(key);
}
}
public void EntrySet(){
Set<Entry<String,Student>> entryset = mt.entrySet();
for (Entry<String, Student> entry : entryset) {
System.out.println(entry.getValue().Name);
}
}
public static void main(String[] args) {
TestSet te = new TestSet();
te.addElement();
te.getElement();
te.Remove();
te.EntrySet();
}
}
这是问题
请输入学生ID:
1
请输入学生姓名:
1
学生信息成功存入档案!
请输入学生ID:
2
请输入学生姓名:
2
学生信息成功存入档案!
请输入学生ID:
3
请输入学生姓名:
3
学生信息成功存入档案!
学生姓名为:3
学生姓名为:2
学生姓名为:1
请输入你要删除的学生ID:
3
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$KeyIterator.next(Unknown Source)
at start.TestSet.Remove(TestSet.java:46)
at start.TestSet.main(TestSet.java:64)
????我想知道为什么会出现这种错误呢???