程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在 Java 中使用 LinkedHashSet 检查数组中的唯一值

发布于2021-09-26 07:56     阅读(1495)     评论(0)     点赞(29)     收藏(4)


我在HackerRank上遇到了这段代码,通过理解这段代码,我真的把自己弄糊涂了,它确实使用 HashMap 检查数组中元素的唯一性

现在让您深入了解,我知道如何做到这一点,而且这也很容易。但是这段代码是不同的,我真的需要了解它的实际作用和作用。

int[] seq = new int[]{3,2,1,3};

Integer[] tmp = new Integer[seq.length];
for (int i = 0; i < seq.length; ++i) {
  tmp[i] = Integer.valueOf(seq[i]);
}

/* THIS PIECE OF CODE, HOW THIS WORKS AND WHAT IT DOES???*/         
if (!((new LinkedHashSet<Integer>(Arrays.asList(tmp))).size() == seq.length)) {
    throw new AssertionError("not all values are unique");
}

我所能做的就是将数组转换为 tmp

Arrays.asList(tmp)

2.将其转换为 LinkedHashSet

LinkedHashSet<Integer>(Arrays.asList(tmp))

3.然后找到HashSet的大小

(LinkedHashSet<Integer>(Arrays.asList(tmp))).size()

4.将其与数组 seq 的长度进行比较。

(new LinkedHashSet<Integer>(Arrays.asList(tmp))).size() == seq.length)

如果长度不等于数组seq那么元素如何唯一?


解决方案


这段代码创建了一个LinkedHashSet包含原始数组的所有元素(装箱intInteger)。

由于 a LinkedHashSet(与所有Sets 一样)不包含重复元素,因此当且仅当 a 的大小Set等于数组的长度时,原始数组才没有重复元素

如果数组有任何重复项,则 的大小Set将小于数组的长度,因为在LinkedHashSet初始化时将消除重复项



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/291383/916e8afa729b88718774/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)