
List去重是通过将List集合转换成Set。Set是最简单的一种集合,不保存重复的元素,集合中的对象不按特定的方式排序,并且没有重复对象。
新建一个Test类,如下所示:
publicclassTest{
@SuppressWarnings({"unchecked","rawtypes"})
publicstaticvoidmain(String[]args){
Listlist=newArrayList()
list.add(1)
list.add(2)
list.add(3)
list.add(4)
list.add(1)
System.out.println(list)
//创建一个set集合
Setset=newHashSet()
//创建一个新的list集合
ListnewList=newArrayList()
set.addAll(list)
newList.addAll(set)
System.out.println(newList)}
扩展资料
参考list是双向循环链表,,每一个元素都知道前面一个元素和后面一个元素。在STL中,list和vector一样,是两个常被使用的容器。和vector不一样的是,list不支持对元素的任意存取。
list中提供的成员函数与vector类似,不过list提供对表首元素的 *** 作push_front、pop_front,这是vector不具备的。
和vector另一点不同的是,list的迭代器不会存在失效的情况,不像vector会保留备份空间,在超过容量额度时重新全部分配内存,导致迭代器失效;list没有备份空间的概念,出入一个元素就申请一个元素的空间,所以它的迭代器不会失效。
参考资料来源:百度百科-list
通过循环进行删除
public static void removeDuplicate(List list) {
for ( int i = 0 i <list.size() - 1 i ++ ) {
for ( int j = list.size() - 1 j >ij -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j)
}
}
}
System.out.println(list)
}
通过HashSet删除
public static void removeDuplicate(List list) {
HashSet h = new HashSet(list)
list.clear()
list.addAll(h)
System.out.println(list)
}
3、删除重复元素,并保持顺序。(我没试)
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet()
List newList = new ArrayList()
for (Iterator iter = list.iterator()iter.hasNext()) {
Object element = iter.next()
if (set.add(element))
newList.add(element)
}
list.clear()
list.addAll(newList)
System.out.println( " remove duplicate " + list)
}
4、定义一个方法,调用即可。
publi List<String>getNewList(List<String>li){
List<String>list = new ArrayList<String>()
for(int i=0i<li.size()i++){
String str = li.get(i)//获取传入集合对象的每一个元素
if(!list.contains(str)){ //查看新集合中是否有指定的元素,如果没有则加入
list.add(str)
}
}
return list//返回集合
}
public class Test{
public static void main(String[] args){
ArrayList<String>arr = new ArrayList<String>()
arr.add("aaa")
arr.add("bbb")
arr.add("aaa")
arr.add("ccc")
arr = getNewList(arr)//方法去重
System.out.println(arr)
}
}
package com.test
import java.util.*public class Test { /**
AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCCC */
public static void main(String[] args) {
List<String>list = new ArrayList<String>()
list.add("AAAA")
list.add("AAAA")
list.add("AAAA")
list.add("BBBB")
list.add("BBBB")
list.add("BBBB")
list.add("CCCC")
list.add("CCCC")
list.add("CCCC")
list.add("DDDD") new Test().removeDuplicateWithOrder(list)// System.out.println(list) } // 删除ArrayList中重复元素
public static void removeDuplicate(List list) { for (int i = 0i <list.size() - 1i++) { for (int j = list.size() - 1j >ij--) { if (list.get(j).equals(list.get(i))) {
list.remove(j)
}
}
}
System.out.println(list)
} // 方法二:通过HashSet剔除 // 删除ArrayList中重复元素,add进去顺序就变了不考虑顺序的话可以使用
public static void removeDuplicate1(List list) {
HashSet h = new HashSet(list)
list.clear()
list.addAll(h)
System.out.println(list)
} // 方法三: 删除ArrayList中重复元素,保持顺序 // 删除ArrayList中重复元素,保持顺序
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet()
List newList = new ArrayList() for (Iterator iter = list.iterator()iter.hasNext()) {
Object element = iter.next() if (set.add(element))
newList.add(element)
}
list.clear()
list.addAll(newList)
System.out.println(" remove duplicate " + list)
}
}
//导入linq命名空间,然后distinct一下就可以了.关键代码如下:
usingSystem.Linq
//比如,list实例为list
varobj=list.Distinct()
//或者麻烦点要根据list的字段xxx过滤就是
varobj_1=frompinlistselectp.xxxdistinct()
扩展资料
list()函数与array()类似,只是它可以在一次 *** 作中从一个数组内提取多个值,同时为多个变量赋值。其形式如下:
voidlist(mixed?)从数据库或文件中提取信息时,这种构造尤其有用。例如,假如你希望格式化并输出从一个文本,文件中读取信息。文件的每一行都包含用户信息,如姓名、职业和喜爱的颜色,每一项用竖线分隔。典型的一行如下所示:
NinoSanzi|profesionalgolfer|green
可以通过一个简单的循环使用list()来读取每一行,将各部分数据赋给变量,按照需要格式化并输出数据。
参考资料来源:百度百科:list
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)