來吧,有問題了,大家共同進步
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)
????我想知道為什么會出現這種錯誤呢???
2016-06-21
專門去網上搜了下,答案挺高深的,對于我這個菜鳥都算不上的,真心看不懂。只是給你個地址,去看看吧。
http://bbs.csdn.net/topics/370149418
【如果我對集合添加刪除一共操作了10次,此時modCount為10,??獲取迭代器的時候expectedModCount也為10,??迭代期間會去 checkForComodification()!??只要在next或者remove之前有對集合操作的動作導致modCount發(fā)生了改變,?就會 拋那個并發(fā)修改異常!】
2016-08-20
問題出在Remove方法中的if判斷語句,用==不能用equals方法
2016-06-09
public void Remove()這個方法顯示是錯誤的根源