package com.pers.Stream; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; /** * 数组去重demo * * @author hoobey */ public class RemoveDuplicatedDataTest { public static void main(String[] args) { String[] strArr = new String[]{"abc", "ab", "abc"}; //Arrays.asList(T...a) 接受的是一个泛型的变长参数 而基本类型是无法被泛型化的 可使用基本包装类 List<String> strList = Arrays.asList(strArr);//String[] --> List<String> for (int i = 0; i < strList.size(); i++) {//因为List是 有序 可重复的 所以并不会去掉重复内容 System.out.println(strList.get(i)+",");//java.io.PrintStream println()打印对象时会自动调用其toString() } int[] intArr = {1, 2, 1, 3, 2, 4}; List list = Arrays.asList(intArr);//List<int[]>不行! --> 原理是List中只能存储对象! for (int i = 0; i < list.size(); i++) { Object obj = list.get(i); System.out.println("下标i=" + i + ",存储的内容:" + obj);//[I@14ae5a5 地址 int[] temp = (int[]) obj;//强转一下 得到地址中指向的数据 for (int j = 0; j < temp.length; j++) { System.out.print(temp[j]+","); } } // 把数组先变成List,List是继承Collection的接口,所以就可以把转换后的list给addAll() /* List intList = new ArrayList(); for (int i = 0; i < intArr.length; i++) { intList.add(intArr[i]); }*/ List<Integer> intList = IntStream.of(intArr).boxed().collect(Collectors.toList()); //要求各位把intArr中重复的数字去掉,仅留下相互不重复的数字 核心就是Set集合存储的是 无序不重复的数据 Set dupDataRemoved = new HashSet(intList); // dupDataRemoved.addAll(intList); // Collections.addAll(dupDataRemoved, intList); for(Iterator it = dupDataRemoved.iterator(); it.hasNext(); ){ System.out.print("去重后的数据是:"+it.next() + ","); } //========================================= /*System.out.println(); String[] strArr = {"xiaoming", "xiaoyu", "xiaoming", "xiaoming", "xiaoyu"}; Arrays.asList(strArr);//List<String> Set strSet = new HashSet(); for(Iterator it = strSet.iterator(); it.hasNext(); ){ System.out.print(it.next() + ","); }*/ } }
控制台的输出信息如下:
abc,
ab,
abc,
下标i=0,存储的内容:[I@14ae5a5
1,2,1,3,2,4,1,2,3,4,
Process finished with exit code 0