有关List查找的问题
2016-03-14 16:12
288 查看
/** * 高效率查找相同的元素或者不同的元 效率相对于最高的 * * @param list1 * @param list2 * @return */ public static List<String> getDiffrent(List<String> list1, List<String> list2) { Map<String, Integer> map = new HashMap<String, Integer>(list1.size() + list2.size()); List<String> diff = new ArrayList<String>();// 存放不同的元素 List<String> diffs = new ArrayList<String>();// 存放相同的元素 List<String> maxList = list1; List<String> minList = list2; if (list2.size() > list1.size()) { maxList = list2; minList = list1; } for (String string : maxList) { map.put(string, 1); } for (String string : minList) { Integer cc = map.get(string); if (cc != null) { map.put(string, ++cc); continue; } map.put(string, 1); } // 取出不同的元素 for (Map.Entry<String, Integer> entry : map.entrySet()) { if (entry.getValue() == 1) { diff.add(entry.getKey());// //取出不同的元素 } if (entry.getValue() >= 2) { diffs.add(entry.getKey());// 取出相同的元素;存放相同的元素 } } return diff; } /** * zhaohe 查找出两个List当中相同的元素 * * @param x * @param y * @return */ public static List<String> listEqual(List<String> x, List<String> y) { List<String> listString = null; try { listString = new ArrayList<String>(); for (String x1 : x) { for (String y1 : y) { if (x1.equals(y1) || x1 == y1) { listString.add(y1); } } } } catch (Exception e) { e.printStackTrace(); } return listString; } /** * zhaohe 比较两个List<String>当中是否存在相同的数据 效率比较低 * * @param x * @param y * @return */ public static boolean compareToList(List<String> x, List<String> y) { boolean flag = false; for (String x1 : x) { for (String y1 : y) { if (x1.equals(y1) || x1 == y1) { flag = true; break; } } } return flag; } /** * 查找一个List<String> 相同的元素 * * @return */ public static List<String> findSameListString(List<String> list) { List<String> diffList = new ArrayList<String>(); Map<String, Integer> map = new HashMap<String, Integer>(); for (String string : list) { Integer cc = map.get(string); if (cc != null) { map.put(string, ++cc); continue; } map.put(string, 1); } for (Map.Entry<String, Integer> entry : map.entrySet()) { if (entry.getValue() >= 2) { diffList.add(entry.getKey());// 取出相同的元素;存放相同的元素 } } return diffList; }
相关文章推荐
- 通知传值(NSNotificationCenter)
- 谷歌地图(Google Maps)
- Flash字体嵌入方法
- as3中强制垃圾回收
- as3中去掉字符串两边的空格,换行符
- as3中textField输入字符时,一次性过长后自动换行
- Android实现伸缩弹力分布菜单效果
- iOS 高效添加圆角效果实战讲解
- 解决centos7命令行中文乱码
- poj 3233(矩阵快速幂)
- VMware Workstation 10安装详解
- 前端开发注意细节总结
- 说说JSON和JSONP,也许你会豁然开朗
- 2015-11-18
- Tcpsocket
- FLEX中SharedObject介绍及应用
- 关于swf安全沙箱冲突:不能被本地访问
- 关于最近的进度和Docker的消息
- 山寨游戏的求生之路
- SQL优化(续)