当前位置:首页 > 科技  > 软件

Java中五个鲜为人知的Collections特性

来源: 责编: 时间:2024-05-07 09:09:31 269观看
导读简介图片Java Collections框架提供了一套全面的接口和类,以高效地处理集合。Collections工具类提供了一些鲜为人知的功能。在本文中,我们将通过简单的示例来探讨这些鲜为人知的功能。1. Collections.nCopies()这个方法

简介

图片图片zhe28资讯网——每日最新资讯28at.com

Java Collections框架提供了一套全面的接口和类,以高效地处理集合。Collections工具类提供了一些鲜为人知的功能。zhe28资讯网——每日最新资讯28at.com

在本文中,我们将通过简单的示例来探讨这些鲜为人知的功能。zhe28资讯网——每日最新资讯28at.com

1. Collections.nCopies()

这个方法在Java中会返回一个不可变的列表,其中包含指定对象的n个副本。zhe28资讯网——每日最新资讯28at.com

Collections工具类中ncopies()的内部代码如下:zhe28资讯网——每日最新资讯28at.com

public static  List nCopies(int n, T o) {        if (n < 0)            throw new IllegalArgumentException("List length = " + n);        return new CopiesList<>(n, o);    }

示例:zhe28资讯网——每日最新资讯28at.com

public static void nCopies(){     List tests = Collections.nCopies(10, "test");     System.out.println(tests);}
[test, test, test, test, test, test, test, test, test, test]

2. Collections.frequency()

这个方法在Java中用于查找给定集合中指定元素的频率。zhe28资讯网——每日最新资讯28at.com

内部代码:zhe28资讯网——每日最新资讯28at.com

public static int frequency(Collection c, Object o) {        int result = 0;        if (o == null) {            for (Object e : c)                if (e == null)                    result++;        } else {            for (Object e : c)                if (o.equals(e))                    result++;        }        return result;    }

示例:zhe28资讯网——每日最新资讯28at.com

public static void frequency(){      List integers = List.of(1, 2, 3, 4, 5, 1, 2, 3, 2, 3, 4);      int frequency = Collections.frequency(integers, 3);      System.out.println(frequency); }    public static void singleton(){        Set singleElement = Collections.singleton("Hello world");        System.out.println(singleElement);        singleElement.add("test");    }    public static void singleton(){        Set singleElement = Collections.singleton("Hello world");        System.out.println(singleElement);        singleElement.add("test");    }

3. Collections.disjoint()

这个方法在Java中提供了一种检查两个集合是否有任何共同元素的方法,如果有,则返回true,否则返回false。借助这个功能,开发者就可以快速查找集合中是否存在共同元素,而无需对它们进行迭代。zhe28资讯网——每日最新资讯28at.com

public static boolean disjoint(Collection c1, Collection c2) { }

示例:zhe28资讯网——每日最新资讯28at.com

public static void disjoint(){     List integers = List.of(1, 2, 3, 4);     List integers1 = List.of(5, 6);     boolean disjoint = Collections.disjoint(integers1, integers);     System.out.println(disjoint);             List integers2 = List.of(1, 2, 3, 4);     boolean disjoint1 = Collections.disjoint(integers2, integers);     System.out.println(disjoint1);}
truefalse

4.Collections.singleton()

这个方法在Java中用于创建只包含单个元素的不可变集合。该方法返回一个仅包含单个元素的不可变Set。如果尝试添加或删除元素,就会出现异常。zhe28资讯网——每日最新资讯28at.com

内部代码:zhe28资讯网——每日最新资讯28at.com

public static  Set singleton(T o) {    return new SingletonSet<>(o);}

示例:zhe28资讯网——每日最新资讯28at.com

public static void singleton(){        Set singleElement = Collections.singleton("Hello world");        System.out.println(singleElement);        singleElement.add("test");    }
[Hello world]Exception in thread "main" java.lang.UnsupportedOperationException at java.base/java.util.AbstractCollection.add(AbstractCollection.java:251) at misc.JavaCollectionFeatures.singleton(JavaCollectionFeatures.java:41) at misc.JavaCollectionFeatures.main(JavaCollectionFeatures.java:13)

5.Collections.rotate()

这个方法在Java中将指定列表的元素向指定距离进行旋转。zhe28资讯网——每日最新资讯28at.com

该方法对列表中的元素执行回环变位(circular rotation),根据指定的距离有效地将它们向左或向右移动。zhe28资讯网——每日最新资讯28at.com

内部代码:zhe28资讯网——每日最新资讯28at.com

public static void rotate(List list, int distance) {      if (list instanceof RandomAccess || list.size() < ROTATE_THRESHOLD)          rotate1(list, distance);      else          rotate2(list, distance);}

示例:zhe28资讯网——每日最新资讯28at.com

public static void rotate(){     List integers = Arrays.asList(1, 2, 3, 4, 5, 3, 5, 5, 6);     Collections.rotate(integers, 6);     System.out.println(integers);             List integers1 = Arrays.asList(1, 2, 3, 4, 5, 3, 5, 5, 6);     Collections.rotate(integers1, 10);     System.out.println(integers1);             List integers2 = Arrays.asList(1, 2, 3, 4, 5, 3, 5, 5, 6);     Collections.rotate(integers2, -3);     System.out.println(integers2);}
[4, 5, 3, 5, 5, 6, 1, 2, 3][6, 1, 2, 3, 4, 5, 3, 5, 5][4, 5, 3, 5, 5, 6, 1, 2, 3]

结论

在本文中,我们探讨了Collections工具类的一些鲜为人知的功能。虽然Java Collections工具类提供了丰富的功能,但有一些鲜为人知的功能在某些情况下对开发者可能会很有用。zhe28资讯网——每日最新资讯28at.com


zhe28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-86990-0.htmlJava中五个鲜为人知的Collections特性

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 前端开发小技巧汇总

下一篇: 使用 Google Wire 在 Go 中进行依赖注入

标签:
  • 热门焦点
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • 一文看懂为苹果Vision Pro开发应用程序

    译者 | 布加迪审校 | 重楼苹果的Vision Pro是一款混合现实(MR)头戴设备。Vision Pro结合了虚拟现实(VR)和增强现实(AR)的沉浸感。其高分辨率显示屏、先进的传感器和强大的处理能力
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 华为HarmonyOS 4升级计划公布:首批34款机型今日开启公测

    8月4日消息,今天下午华为正式发布了HarmonyOS 4系统,在更流畅的前提下,还带来了不少新功能,UI设计也有变化,会让手机焕然一新。华为宣布,首批机型将会在
  • 三星显示已开始为AR设备研发硅基LED微显示屏

    7月18日消息,据外媒报道,随着苹果首款头显产品Vision Pro在6月份正式推出,AR/VR/MR等头显产品也就将成为各大公司下一个重要的竞争领域,对显示屏这一关
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top