
正文
java集合去重代码 java list集合去重
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java中如何去除List中的重复的值
你要去除的值是基本数据类型还是对象呢?
如果不想存重复数据何不用Set呢。。。
其实吧。。在知道上提问不如在网页上查。。这个是我查到的第一个。。网页里的内容,他一共使用了3种方式
最近项目中需要对list集合中的重复值进行处理,大部分是采用两种方法,一种是用遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list集合。
但是赋给set集合后,由于set集合是无序的,原先的顺序就打乱了。所以我又想着能不能用set的特性进行去重又不打乱顺序呢?
试了一下,也是可以的,几种方法在不同情况下都有各自的优势。现在将代码写出来,比较一下。
//set集合去重,不打乱顺序
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
Set set = new HashSet();
List newList = new ArrayList();
for (String cd:list) {
if(set.add(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}123456789101112131415161718
//遍历后判断赋给另一个list集合
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
ListString newList = new ArrayListString();
for (String cd:list) {
if(!newList.contains(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}1234567891011121314151617
//set去重
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
Set set = new HashSet();
List newList = new ArrayList();
set.addAll(list);
newList.addAll(set);
System.out.println( "去重后的集合: " + newList);
}12345678910111213141516
//set去重(缩减为一行)
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
List newList = new ArrayList(new HashSet(list));
System.out.println( "去重后的集合: " + newList);
}12345678910111213
hashset不进行排序,还有一种方法是用treeset,去重并且按照自然顺序排列,将hashset改为treeset就可以了。(原本的顺序是改变的,只是按照字母表顺序排列而已)
//去重并且按照自然顺序排列
List newList = new ArrayList(new TreeSet(list));
相关问答
Q1: JAVA如何去除数组中每个元素中重复的内容
java数组中去掉重复数据可以使用set集合,set本身内部是不保存重复的数据的,如下代码:
import java.util.Arrays;import java.util.Set;import java.util.TreeSet; public class ceshi { public static void main(String[] args) { int[] testArr = { 5, 5, 1, 2, 3, 6, -7, 8, 6, 45, 5 };//新建一个int类型数组 System.out.println(Arrays.toString(testArr)); SetInteger set = new TreeSetInteger();//新建一个set集合 for (int i : testArr) { set.add(i); } Integer[] arr2 = set.toArray(new Integer[0]); // 数组的包装类型不能转 只能自己转;吧Integer转为为int数组; int[] result = new int[arr2.length]; for (int i = 0; i result.length; i++) { result[i] = arr2[i]; } System.out.println(Arrays.toString(arr2)); }}
运行结果如下:
Q2: 用Java中的ArrayList实现:去除集合中字符串的重复值(字符串的内容相同)
public class Test {
public static void main(String[] args) {
ListString list = new ArrayListString();
list.add("测试1");
list.add("测试2");
list.add("测试3");
list.add("测试4");
list.add("测试4");
list.add("测试2");
list.add("测试5");
System.out.println("没有去重前的数据为"+list.toString());
for(int i = 0;ilist.size()-1;i++){
for(int j = list.size()-1;ji;j--) {
if(list.get(j).equals(list.get(i))){
list.remove(j);
}
}
}
System.out.println("去重后的数据为"+list.toString());
}
}
希望能帮到你!
java集合去重代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java list集合去重、java集合去重代码的信息别忘了在本站进行查找喔。








