先虚拟有这样一个需求:一个考生成绩结果的显示由科目号作为条件进行查询条件获得,而显示的时候,不可能显示科目号,那样不很直观的让用户知道是哪个科目多少分
先定义一个实体model :
public class km{
private String kmh; //科目号
private String kmm; //科目名
private void setKmh(String kmh){
this.kmh = kmh;
}
private String getKmh(){
return kmh;
}
private void setKmm(String kmm){
this.kmm = kmm;
}
private String getKmm(){
return kmm;
}
}
现在通过一个方法 获得一个保存了很多科目号的结果集List<km> kmList;
保存要获取科目名的科目号List<String> string = new ArrayList<String>(){"02","06","08"};
(假如有01,02,03,04,05,06,07,11,13,14,15,16这些科目号,而实际只需要获取02,06,08的科目名)
现在我们要从 这个结果集中挑出所需要的数据
1.用HashMap<String,String>保存kmList数据
HashMap<String, String> hskm = new HashMap<String, String>();
for(km k : kmList){
if (!hskm.containsKey(km.getKmh())) { //过滤掉已经保存的
hskm.put(km.getKmh(), km.getMc());
}
}
现在就是进行挑选了
StringBuilder sss = new StringBuilder();
for(String str : string){
if(hskm.containsKey(str)){ //存在这样的科目号
sss.append("'+hskm.get(str)); //把存在科目号的科目名给保存在sss中
}
2.用for嵌套循环
StringBuilder sss = new StringBuilder();
for(String str : string){
for(km k : kmList){
if(str.equals(k.getKmh)){
sss.append("'+k.getKmm());
}
可见用HashMap<String,String>和for合作的效率远远大于for嵌套