Java中如何去除List中的重复的值

Python014

Java中如何去除List中的重复的值,第1张

import java.util.ArrayList

import java.util.LinkedHashSet

import java.util.List

import java.util.Set

public class Test {

    public static void main(String[] args) {

        /**

         * 初始化一个 ArrayList 对象,其元素有重复的值。

         */

        List<String> list = new ArrayList<String>()

        list.add("a")

        list.add("b")

        list.add("a")

        list.add("c")

        list.add("d")

        System.out.println("list = " + list.toString())

        /**

         * 利用 LinkedHashSet 的特性(按照存入顺序保存,并保证元素不重复)。

         * 将 list 传入 LinkedHashSet 的构造器中去掉重复元素

         */

        Set<String> linkedHashSet = new LinkedHashSet<String>(list)

        System.out.println("linkedHashSet = " + linkedHashSet.toString())

        /**

         * 将 linkedHashSet 转成 ArrayList 。

         */

        list = new ArrayList<String>(linkedHashSet)

        System.out.println("去重复后的 list = " + list)

        System.out.println("需要注意的是,如果 List 的泛型类型是自定义类型,例如Person..等,需要重写 Person 类的 equals 和 hashCode 方法。")

    }

}

效果:

假设原数据:

List userlist ....

方法1(也是我比较常用的):

新建一个List,遍历原list,加入新的list

List newlist = new ArrayList()

for ( v : userlist) {

  if (!newlist.contains(v))

    newlist.add(v)

}

...

方法2:利用set集合

Set set = new  HashSet() 

List newlist = new ArrayList()

for (v : userlist) {

    if(set.add(v)){

     newlist.add(v)

    }

}

!!!

百度真心坑啊,2015年的问题竟然也能拿出来让回答!

List<String> list = new ArrayList<>()

/*list.add("abc")

list.add("abc")

list.add("def")

list.add("bcd")*/

Set<String> set = new LinkedHashSet<>()//这种方式保证去重后的元素相对位置不变

//Set<String> set = new HashSet<>()//这种方式去重后元素的位置很有可能变化了

set.addAll(list)

list.clear()

list.addAll(set)

for(String s : list){

System.out.println(s)

}

整个思路就是利用set中的元素是不重复的,来达到去重的目的