去掉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;}}?
?