码迷,mamicode.com
首页 > 编程语言 > 详细

数组去重Demo引出的思考

时间:2017-12-14 13:29:11      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:data   nbsp   print   泛型   oob   void   package   思考   转换   

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

 

 

数组去重Demo引出的思考

标签:data   nbsp   print   泛型   oob   void   package   思考   转换   

原文地址:http://www.cnblogs.com/hoobey/p/8036881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!