Java中删除List中相同元素的两种方法

Java中两种删除List中相同element的方法,一种维护List原先的元素顺序,另一种不维护List原先的元素顺序。

package stage3;

import java.util.Iterator;

public class RemoveTheElement {
	public static <E> void removeDuplicateWithoutOrder(java.util.List<E> list) {
		java.util.Set<E> set = new java.util.HashSet<E>(list);
		list.clear();
		list.addAll(set);
	}

	public static <E> void removeDuplicateWithOrder(java.util.List<E> list) {
		java.util.Set<E> set = new java.util.HashSet<E>();
		java.util.List<E> newList = new java.util.Vector<E>();
		Iterator<E> iter = list.iterator();
		while (iter.hasNext()) {
			E element = iter.next();
			if (set.add(element)) {
				newList.add(element);
			}
		}
		list.clear();
		list.addAll(newList);
	}

	public static void main(String[] args) {
		java.util.ArrayList<String> list1 = new java.util.ArrayList<>();
		String str = "the apple and the banana";
		System.out.println("source:" + str);
		list1.addAll(java.util.Arrays.asList(str.split(" ")));
		RemoveTheElement.removeDuplicateWithoutOrder(list1);
		System.out.print("target:");
		for (String s : list1) {
			System.out.print(s + " ");
		}
		System.out.println();

		java.util.ArrayList<Integer> list2 = new java.util.ArrayList<>();
		Integer[] num = { 1, 2, 3, 4, 3, 5, 5, 2, 1 };
		list2.addAll(java.util.Arrays.asList(num));
		RemoveTheElement.removeDuplicateWithOrder(list2);
		for (int i : list2) {
			System.out.print(i + ",");
		}
	}
}

输出比较:

第一种方法

source:    the apple and the banana

target:    the banana apple and

第二种方法

source:    1, 2, 3, 4, 3, 5, 5, 2, 1

target:    1,2,3,4,5,

时间: 2024-08-01 05:39:48

Java中删除List中相同元素的两种方法的相关文章

【转】oracle 中随机取一条记录的两种方法

oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COUNT(*) INTO V_COUNT FROM  TBL_MYTABLE; SELECT TRUNC(DBMS_RADOM.VALUE(1,V_COUNT+1)) INTO V_NUM FROM DUAL; SELECT * FROM TBL_MYTABLE T WHERE T.FID=V_NUM;

java的取出map里所有元素的两种方式

/* * 取出map元素的两种方式 */package com.map.test; import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set; public class Test1 { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<Integer,String> mp=new HashMa

Android中使用Gson解析JSON数据的两种方法

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组

关于网页中不刷新页面改变验证码的两种方法

今天做一个注册的页面,需要输入验证码.验证码的生成是动态的,不过要刷新页面,才能改变验证码,因为刷新后浏览器会向服务器提交新的请求,服务器就动态生成新的验证码响应给浏览器.为了能够在不刷新页面的情况下改变验证码,需要JavaScript的支持. 第一种方法是在请求地址后面带参数,这是一个小窍门.因为浏览器访问服务器的时候地址后面可以带上参数一起传给服务器,而加载内容是只看地址不看后面的参数:另外在<img src="地址"/>中,只要浏览器发现地址改变了就会自动重新加载该地

Java去除掉HTML里面所有标签的两种方法——开源jar包和自己写正则表达式

Java去除掉HTML里面所有标签,主要就两种,要么用开源的jar处理,要么就自己写正则表达式.自己写的话,可能处理不全一些自定义的标签.企业应用基本都是能找开源就找开源,实在不行才自己写…… 1,开源的,我目前找到的就是Jsoup包: public static String getTextFromTHML(String htmlStr) { Document doc = Jsoup.parse(htmlStr); String text = doc.text(); // remove ext

PHP程序中删除字符串最后一个字符的三种方法

常见的语法格式: foreach ($arr as $key => $value) {$arr_str = $arr['x_id'] . ',' . $arr_str;} 假设字符数组 $arr 中的字符分别为 arr[0] = 'a';arr[1] = 'b';arr[2] = 'c'; 则,拼接后的 $arr_str 字符串为 a,b,c, 这个时候,就需要我们对最后一位字符','进行删除处理. 二php中删除最后一位字符的方法总结: 方法一: substr($arr_str,0,strle

JS中如何在外部引用私有变量的两种方法 复习

引用:https://blog.csdn.net/liwenfei123/article/details/77964222 运用闭包的特权方法 在构造函数中定义特权方法 这种模式在构造函数中定义了所有私有变量和函数. 能够在构造函数中定义特权方法是因为特权方法作为闭包,能够访问在构造函数中定义的所有变量和函数. function product(){ var name='yuxiaoliang'; this.getName=function(){ return name; } } var obj

(转载)Eclipse将引用了第三方jar包的Java项目打包成可执行jar的两种方法

转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 "MANIFEST.MF", 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/common

java中按字节获得字符串长度的两种方法

jdk本身就自带获取字符串字节长度的api了,但字符串如果包含特殊符号或全半角符号或标点符号获取到的结果会有偏差,最好的证据就是新浪微博的字数统计了 // jdk自带的获取字节长度 //注意getBytes()默认获取的是以文件编码格式的bytes,通常都是UTF-8(可以看api),不同编码格式的bytes,获取到的长度也不同,本人亲自测试过,建议获取有指定编码格式的bytes长度,如:getBytes("UTF-8") int length = new String().getBy