來(lái)吧,有問(wèn)題了,大家共同進(jìn)步
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("請(qǐng)輸入學(xué)生ID:");
String id = Input.next();
if(mt.get(id) == null){
System.out.println("請(qǐng)輸入學(xué)生姓名:");
String name = Input.next();
Student newstudent = new Student(id,name);
System.out.println("學(xué)生信息成功存入檔案!");
mt.put(id, newstudent);
i++;
}else{
System.out.println("學(xué)生ID已經(jīng)被占用??!");
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("學(xué)生姓名為:"+test.Name);
}
}
public void Remove(){
System.out.println("請(qǐng)輸入你要?jiǎng)h除的學(xué)生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();
}
}
這是問(wèn)題
請(qǐng)輸入學(xué)生ID:
1
請(qǐng)輸入學(xué)生姓名:
1
學(xué)生信息成功存入檔案!
請(qǐng)輸入學(xué)生ID:
2
請(qǐng)輸入學(xué)生姓名:
2
學(xué)生信息成功存入檔案!
請(qǐng)輸入學(xué)生ID:
3
請(qǐng)輸入學(xué)生姓名:
3
學(xué)生信息成功存入檔案!
學(xué)生姓名為:3
學(xué)生姓名為:2
學(xué)生姓名為:1
請(qǐng)輸入你要?jiǎng)h除的學(xué)生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)
????我想知道為什么會(huì)出現(xiàn)這種錯(cuò)誤呢???
2016-06-21
專(zhuān)門(mén)去網(wǎng)上搜了下,答案挺高深的,對(duì)于我這個(gè)菜鳥(niǎo)都算不上的,真心看不懂。只是給你個(gè)地址,去看看吧。
http://bbs.csdn.net/topics/370149418
【如果我對(duì)集合添加刪除一共操作了10次,此時(shí)modCount為10,??獲取迭代器的時(shí)候expectedModCount也為10,??迭代期間會(huì)去 checkForComodification()!??只要在next或者remove之前有對(duì)集合操作的動(dòng)作導(dǎo)致modCount發(fā)生了改變,?就會(huì) 拋那個(gè)并發(fā)修改異常!】
2016-08-20
問(wèn)題出在Remove方法中的if判斷語(yǔ)句,用==不能用equals方法
2016-06-09
public void Remove()這個(gè)方法顯示是錯(cuò)誤的根源