首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

去掉list中有反复值的所有元素,去重复值

2012-09-03 
去掉list中有重复值的所有元素,去重复值直接参考代码?import java.util.ArrayListimport java.util.Array

去掉list中有重复值的所有元素,去重复值

直接参考代码

?

import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;/** * 删除list重复值 *  * @author zhaoliliang *  */public class ListUtil {public static void main(String[] args) {testBean();testXBean();testString();testXString();}/* 测试方法,Bean元素,去掉list中有重复值的所有元素 */private static void testBean() {List<Bean> list = new ArrayList<Bean>();list.add(new Bean(1, "zhaoll"));list.add(new Bean(2, "zhaoll_2"));list.add(new Bean(1, "zhaoll"));list.add(new Bean(1, "lianglf"));System.out.println(list);deleteRepeter(list);System.out.println(list);}/* 测试方法,Bean元素,去list重复值 */private static void testXBean() {List<Bean> list = new ArrayList<Bean>();list.add(new Bean(1, "zhaoll"));list.add(new Bean(2, "zhaoll_2"));list.add(new Bean(1, "zhaoll"));list.add(new Bean(1, "lianglf"));System.out.println(list);deleteDuplicates(list);System.out.println(list);}/* 测试方法,字符串元素,去掉list中有重复值的所有元素 */private static void testString() {List<String> list = new ArrayList<String>();list.addAll(Arrays.asList(new String[] { "b", "c", "a", "a", "d", "c","c", "c" }));System.out.println(list);deleteRepeter(list);System.out.println(list);}/* 测试方法,字符串元素,去list重复值 */private static void testXString() {List<String> list = new ArrayList<String>();list.addAll(Arrays.asList(new String[] { "b", "c", "a", "a", "d", "c","c", "c" }));System.out.println(list);deleteDuplicates(list);System.out.println(list);}/** * 去掉list中有重复值的所有元素 *  * @param list */@SuppressWarnings({ "rawtypes", "unchecked" })private static void deleteRepeter(List<?> list) {Set set1 = new HashSet();// 保持快速去重复值,必须用HashSetSet set2 = new HashSet();for (Iterator it = list.iterator(); it.hasNext();) {Object item = it.next();if (set1.add(item) == false) {set2.add(item);}}for (Iterator it = list.iterator(); it.hasNext();) {Object item = it.next();if (set2.contains(item)) {it.remove();}}}/** * 去list重复值 *  * @param list */@SuppressWarnings({ "rawtypes", "unchecked" })private static void deleteDuplicates(List<?> list) {Set set = new HashSet();// 保持快速去重复值,必须用HashSetfor (Iterator it = list.iterator(); it.hasNext();) {Object item = it.next();if (set.add(item) == false) {it.remove();}}}}

?

测试用的自定义类

/** * 自定义的一个JavaBean,供测试使用。 *  * @author zhaoliliang */class Bean {private int id;private String name;public Bean() {super();}public Bean(int id, String name) {super();this.id = id;this.name = name;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + id;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Bean other = (Bean) obj;if (id != other.id)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}@Overridepublic String toString() {return "\nBean [id=" + id + ", name=" + name + "]";}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

?

?

热点排行