list对象去重

来源:互联网 发布:网络监控能监控qq吗 编辑:程序博客网 时间:2024/05/11 20:37

一、list中元素为基础类型

使用hashset即可,例:

List<String> removeDup(List<String> list){Set s = new HashSet<String>(list);list.clear(); // 清空listlist.addAll(s);return list;}

二、元素类型为对象

1、修改对象的equals和hashset方法,再使用hashset

public class Menu {    private Long menuId;    private String sysShortName;    private Long parentId;    private String menuName;  //get set@Overridepublic int hashCode() {//修改hashcodereturn this.getMenuId().hashCode();}@Overridepublic boolean equals(Object obj) {if(obj==null||!(obj instanceof Menu)){return false;}Menu m = (Menu)obj;//向下转型//id相同则任务是同一个对象return this.getMenuId().equals(m.getMenuId());}}
2、使用map去重,以Menu对象为例

//id相同即为重复private List<Menu> removeDupMenu(List<Menu> menus){Map<Long,Menu> map = new HashMap<Long, Menu>();for(Menu menu:menus){map.put(menu.getMenuId(), menu);}menus.clear();menus.addAll(map.values());return menus;}



原创粉丝点击