现在假设有一个类叫RainfallRecord,即降雨量记录,包含3个属性:城市,年份,和一个12元数组记录该市该年每月的降雨量。(城市+年份 不重复)
还有一个类Archive,即档案馆,包含一个HashSet<RainfallRecord>,来保存上面的记录。
另外还有一个Driver。其他方法诸如插入记录等皆已写好。
现在要求实现一个方法,来删除指定 城市+年份 的记录,请问如何实现?------------------
各位高手帮帮忙啊!
还有一个类Archive,即档案馆,包含一个HashSet<RainfallRecord>,来保存上面的记录。
另外还有一个Driver。其他方法诸如插入记录等皆已写好。
现在要求实现一个方法,来删除指定 城市+年份 的记录,请问如何实现?------------------
各位高手帮帮忙啊!
解决方案 »
- eclipse 3.3 jee Europe 版已经集成了很多插件
- 在oracle9i里存韩文,有的字正常,有的字是乱码,谁见过?
- 有没有像excel那样的swt控件吗?
- 对Java1.5(5.0)的使用情况统计!
- 请问如何转换不同格式的日期为同一格式?
- 请问JDialog中dispose和hide有什么区别?
- JAVA平台上有没有类似于M$ BizTalk Server的软件、技术。
- 请问applet如何和页面上的其他本分交互,比如输出HTML文件,和象页面javascript一样操作页面元素
- 请问java applet程序用appletviewer运行正常,而放在网页中运行就没有显示,错在那里呢?急急急,送20分啊
- Eclipse的工具栏成了两行,怎么设置为一行
- (在线等)如何写一个自己的source reader来读自己的数据
- java 按钮透明怎么做?
public static void deleteRecord(Archive arc,String cityName,int year){
for(RainfallRecord rr: arc.rainfallDatabase){
if(rr.cityName.equals(cityName)&&rr.year==year){
arc.delete(rr);
}
}
}
我编辑了以上方法,却出现了以下错误:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$KeyIterator.next(HashMap.java:828)
at Driver.deleteRecord(Driver.java:35)
at Driver.main(Driver.java:57)
for(Iterator<RainfallRecord> it= arc.rainfallDatabase.iterator();it.hasNext();){
RainfallRecord rr=it.next();
if(rr.cityName.equals(cityName)&&rr.year==year){
it.remove();
}
}
}
但是还是很不明白,因为还没有学到接口,哪位前辈能简明地解释给我这个新手听一下这段代码呢?
public static void deleteRecord(Archive arc,String cityName,int year){
RainfallRecord temp = null;//定义一个变量用来保存要删除的记录,然后等遍历完后再进行删除操作
for(RainfallRecord rr: arc.rainfallDatabase){
if(rr.cityName.equals(cityName)&&rr.year==year){
temp = rr;
break;
}
}
arc.delete(temp);
}在遍历的同时不能执行删除操作!
“foreach”语句中,可以循环遍历 数组对象、集合对象、自定义的对象,
但是,前提条件是:
集合对象,是JDK本身提供的那些对象,他们都实现Iterator接口;
自定义的对象,必须要有相关的Iterator实现。所以Archive implements Iterable<RainfallRecord >
在Archive类内 方法重写
public Iterator<RainfallRecord > iterator() {
}
大致方法本来应该这样吧。
应该是
Archive 类没有实现Iterable接口。