JAVA数组去重方法

这篇具有很好参考价值的文章主要介绍了JAVA数组去重方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一种:使用双重for循环去重

public class NewArr1 {
    public static void main(String[] args) {
        Integer[] arr = {1, 2, 3, 2, 4, 1, 5};
        int len = arr.length;
        for (int i = 0; i < len; i++) {
            for (int j = i + 1; j < len; j++) {
                if (arr[i] == arr[j]) {
                    arr[j] = arr[len - 1];
                    len--;
                    j--;
                }
            }
        }
        int[] newArr = new int[len];
        for (int i = 0; i < len; i++) {
            newArr[i] = arr[i];
        }
        for (int i = 0; i < newArr.length; i++) {
            System.out.print(newArr[i]+" ");
        }
    }
}

第二种:使用java8的stream流去重

import java.util.Arrays;

public class NewArr2 {
    public static void main(String[] args) {
        Integer[] arr = {1, 2, 3, 2, 4, 1, 5};
        Integer[] newArr = Arrays.stream(arr).distinct().toArray(Integer[]::new);
        for (int i = 0; i < newArr.length; i++) {
            if (i == (newArr.length - 1)) {
                System.out.print(newArr[i]);
            } else {
                System.out.print(newArr[i] + ",");
            }
        }
    }
}

第三种:使用HashSet集合去重

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class NewArr3 {
    public static void main(String[] args) {
        Integer[] arr = {1, 2, 3, 2, 4, 1, 5};
        Set<Integer> set = new HashSet<>(Arrays.asList(arr));
        Integer[] newArr = set.toArray(new Integer[0]);
        for (int i = 0; i < newArr.length; i++) {
            if (i == (newArr.length - 1)) {
                System.out.print(newArr[i]);
            } else {
                System.out.print(newArr[i] + ",");
            }
        }
    }
}

拓展(HashSet去重原理):

HashSet是一种基于哈希表实现的Set接口。它通过hashCode()方法来确定元素在集合中的存储位置,通过equals()方法来判断元素是否相同。

当向HashSet中添加元素时,HashSet会先计算元素的hashCode值,然后根据hashCode值将元素放入不同的桶(bucket)中。当多个元素放入同一个桶中时,它们会以链表的形式存储。

当判断两个元素是否相同时,HashSet会先调用hashCode()方法比较它们的哈希值,如果哈希值不同,那么这两个元素也就不相同了;如果哈希值相同,还会继续调用equals()方法比较它们的值,如果equals()方法返回true,那么这两个元素即被视为相同元素,新元素就不能被添加进去。文章来源地址https://www.toymoban.com/news/detail-521019.html

到了这里,关于JAVA数组去重方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 使用 Stream 去重

    在项目中可以会获取到一个集合,集合中有很多重复的数据,但是总感觉转成Set去重不太体面,那就可以试试使用 Stream 来实现根据对象的属性进行去重 将集合转为Stream流后通过Collectors.toMap 进行去重 UserEntity::getName 指定根据名字去重 user - user 执行后要转换的类型(因为我们不

    2024年02月14日
    浏览(33)
  • java Stream去重操作

     1.根据对象的某个属性去重: 网上找的stream流去重方法,可以根据类的某个属性去重,这里记录一下 使用:

    2024年02月10日
    浏览(33)
  • java stream去重的几种方式

    这个方法会根据元素的 hashCode() 和 equals() 方法来判断是否重复。如果是自定义的类,需要重写这两个方法。 示例: 这个方法可以根据元素的某个属性或者多个属性来去重,比如 name 或者 name+address。这个方法会使用 TreeSet 来排序元素,所以不能保持原来的顺序。 示例: 这个方

    2024年02月13日
    浏览(68)
  • Java中list集合stream流去重

    准备类: (1)根据单字段name去重 (2)根据多字段name price去重 (3)示例 输出打印结果

    2024年02月09日
    浏览(56)
  • java stream distinct根据list某个字段去重

    java stream distinct根据list某个字段去重,普通List简单去重: 很显然这种满足不了需求,我们List里的是实体对象,这里的是字符串。 首先创建了一个Student类,该类包含id、name、age三个字段,使用了注解@Data,我们想根据学生的name去重。 一、Stream流 + TreeSet(推荐) 根据学生的

    2024年01月17日
    浏览(86)
  • 使用java8 新特性stream流对List<Map<String, Object>>集合进行遍历、过滤、查询、去重、排序、分组

    对于一个ListMapString, Object类型的数据,可以使用Java 8的新特性stream流来进行遍历、过滤、查询、去重、排序、分组等操作。 遍历: 过滤: 查询: 去重: 排序: 分组:

    2024年02月10日
    浏览(69)
  • Stream流实践(二):list 对象数组根据某字段去重的三种基本思路

    相信大家对于list简单数组的去重很熟悉了,例如以下代码 那我们来探讨下,对于list中保存为对象的数组,根据内部对象的 某一个字段 去重有什么好的思路呢? 给出一个简单的Student对象 大家学废了吗?

    2024年02月16日
    浏览(85)
  • 【Java】集合List转换为数组【toArray() /stream()流】实现

    在Java中,集合(List 接口的实现类)提供了一个名为 toArray 的方法,用于将集合中的元素转换成数组。该方法有两个主要的重载形式,分别用于不同的情况。 这个方法将集合中的元素复制到一个指定类型的数组中,并返回该数组。 如果指定的数组大小足够容纳集合中的所有

    2024年02月03日
    浏览(45)
  • Java中List集合对象去重及按属性去重的8种方法

    是大家最容易想到的,先把List数据放入Set,因为Set数据结构本身具有去重的功能,所以再将SET转为List之后就是去重之后的结果。这种方法在去重之后会改变原有的List元素顺序,因为HashSet本身是无序的,而TreeSet排序也不是List种元素的原有顺序。 去重后的集合: [kobe, james,

    2024年04月15日
    浏览(144)
  • 利用java语言中的stream流操作判断一个数组中是否有重复元素

    判断数组中是否有重复元素可以说是每一个编程语言初学者都会遇到的题目,常见的各种搜索算法本文不做赘述了,我们这次介绍的是利用java语言中特有的stream流操作来判断通用类型数组是否包含重复元素。 首先我们声明一个泛型方法: 表明该方法适用于所有类型的数组。

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包