欢迎回家
我们一直在改变

给你一个数组,怎么去重?

对于数组去重的方法有很多,这里总结了数组去重的三种常用方式

public class Test {

    public static void main(String[] args) {

        /**

         * 第一种方式,虽然去重了,但是不能排序

         /
        //定义一个数组
        int[]str={5,5,5,3,1,4,72,1,2,3};
        //定义一个集合
        List list = new ArrayList<>();
        //遍历整个数组
        for (int i = 0; i < str.length; i++) {
        //如果集合不包含这个数字就添加
            if(!list.contains(str[i])){
                list.add(str[i]);
            }
        }
        System.out.println("第一种"+list);
        /*

         * 第二种方式:去重加排序

         * TreeSet不仅可以使元素不重复,而且可以实现排序等功能的集合

         */

        Integer[]str2={5,5,5,3,1,4,72,1,2,3};

        //Arrays.asList()是将一个数组转化为一个List对象

        TreeSet set = new TreeSet<>(Arrays.asList(str2));
        Iterator i = set.iterator();
        while(i.hasNext()){
          System.out.println("第二种"+i.next());
        }    
         /**
          * 用set和list实现去重
          */
         int[]str3={5,5,5,3,1,4,72,1,2,3};
         List arrayList = new ArrayList<>();
         Set numSet = new HashSet();
         for (Integer newstr : str3) {
             arrayList.add(newstr);
             numSet.addAll(arrayList);
         }
         System.out.println(numSet);
      } 
} 

treeset去重排序原理:

hashSet去重原理:

底层数据结构是哈希表,哈希表依赖于哈希值存储
添加元素时保证元素唯一,本质底层依赖两个方法:

1,hashCode 2,equals是否相同
在HashSet中,基本的操作都是有HashMap底层实现的,因为HashSet底层是用HashMap存储数据的。当向HashSet中添加元素的时候,首先计算元素的hashcode值,然后用这个(元素的hashcode)%(HashMap集合的大小)+1计算出这个元素的存储位置,如果这个位置位空,就将元素添加进去;如果不为空,则用equals方法比较元素是否相等,相等就不添加,否则找一个空位添加。

原文链接: https://blog.csdn.net/qq_30984561/article/details/90757688

赞(0)
未经允许不得转载:91coding » 给你一个数组,怎么去重?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

立即登录   注册

91CODING 小白轻松上手,大牛稳健进步

关于我们免责声明