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

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

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

简介

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

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

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

1. Collections.nCopies()

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

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

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

示例:Wd628资讯网——每日最新资讯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中用于查找给定集合中指定元素的频率。Wd628资讯网——每日最新资讯28at.com

内部代码:Wd628资讯网——每日最新资讯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;    }

示例:Wd628资讯网——每日最新资讯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。借助这个功能,开发者就可以快速查找集合中是否存在共同元素,而无需对它们进行迭代。Wd628资讯网——每日最新资讯28at.com

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

示例:Wd628资讯网——每日最新资讯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。如果尝试添加或删除元素,就会出现异常。Wd628资讯网——每日最新资讯28at.com

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

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

示例:Wd628资讯网——每日最新资讯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中将指定列表的元素向指定距离进行旋转。Wd628资讯网——每日最新资讯28at.com

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

内部代码:Wd628资讯网——每日最新资讯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);}

示例:Wd628资讯网——每日最新资讯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工具类提供了丰富的功能,但有一些鲜为人知的功能在某些情况下对开发者可能会很有用。Wd628资讯网——每日最新资讯28at.com


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

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

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

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

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

标签:
  • 热门焦点
  • 小米官宣:2023年上半年出货量中国第一!

    今日早间,小米电视官方微博带来消息,称2023年小米电视上半年出货量达到了中国第一,同时还表示小米电视的巨屏风暴即将开始。“公布一个好消息2023年#小米电视上半年出货量中国
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 苹果公司要求三星和LG Display生产「无边框」OLED iPhone显示屏

    据 The Elec 报道,苹果已要求其供应商为未来的 iPhone 型号开发「无边框」OLED 显示面板。苹果显然已要求三星和 LG Display 开发新的 OLED 显示面
  • OPPO K11采用全方位护眼屏:三大护眼能力减轻视觉疲劳

    日前OPPO官方宣布,全新的OPPO K11将于7月25日正式发布,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼IMX890主摄,堪称是2000档位影像表
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
  • 上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
  • 荣耀Magic4 至臻版 首创智慧隐私通话 强劲影音系统

    2022年第一季度临近尾声,在该季度内,许多品牌陆续发布自己的最新产品,让大家从全新的角度来了解当今的手机技术。手机是电子设备中,更新迭代十分迅速的一款产品,基
Top