日期:2014-05-20  浏览次数:20730 次

ArrayList中存放map,确保map中的值唯一,我也测试了,可以,但是不知道是否有没有考虑到得地方..望解答,谢谢
具体代码如下:
  List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
  Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("linkMail", "aa@a.com");
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("linkMail", "aa@a.com");
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("linkMail", "2aa@a.com");
list.add(map1);
list.add(map2);
list.add(map3);

String mail1= null;
String mail2 = null;
for (Map temp : list){
mail1 = (String)temp.get("linkMail");
if(mail1.equals(mail2)){
throw new Exception("error");
}
mail2 = mail1;

如果有相同的 想让程序停止运行,不知道这样对吗?谢谢解答~

------解决方案--------------------
不需要抛出异常的,continue就可以了
------解决方案--------------------
你想让程序停止,那就是System.exit(-1);这是意外的停止,但是可以实现停止的功能。


你这个throw Exception,只是抛出一个异常。并没用使程序停止。
------解决方案--------------------
throw new Exception("error");
这个应该是
throw new RuntimeException("error");吧?
楼主试一试
------解决方案--------------------
用returned呀,关键时刻怎能忘记它呢
------解决方案--------------------
不好意思,写错了,用return ,程序就会停止
------解决方案--------------------
Java code

      List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
      Map<String, Object> map1 = new HashMap<String, Object>();
      map1.put("linkMail", "aa@a.com");
      Map<String, Object> map2 = new HashMap<String, Object>();
      map2.put("linkMail", "aa@a.com");
      Map<String, Object> map3 = new HashMap<String, Object>();
      map3.put("linkMail", "2aa@a.com");
      list.add(map1);
      list.add(map2);
      list.add(map3);
      
      Set<Map<String, Object>> set = new HashSet<Map<String, Object>>(list);

      if(set.size() != list.size()) {
         throw new Exception("error");
      }

------解决方案--------------------
探讨
不好意思,表达有点错误了,最主要的是 :这样判断list中存放map的值是否相同的比较方法对吗?

------解决方案--------------------
要重写equals hashCode两个方法