文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-11-29 22:38

关注

Java Collections框架提供了一套全面的接口和类,以高效地处理集合。Collections工具类提供了一些鲜为人知的功能。

在本文中,我们将通过简单的示例来探讨这些鲜为人知的功能。

1. Collections.nCopies()

这个方法在Java中会返回一个不可变的列表,其中包含指定对象的n个副本。

Collections工具类中ncopies()的内部代码如下:

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

示例:

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中用于查找给定集合中指定元素的频率。

内部代码:

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;
    }

示例:

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。借助这个功能,开发者就可以快速查找集合中是否存在共同元素,而无需对它们进行迭代。

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

示例:

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);
}
true
false

4.Collections.singleton()

这个方法在Java中用于创建只包含单个元素的不可变集合。该方法返回一个仅包含单个元素的不可变Set。如果尝试添加或删除元素,就会出现异常。

内部代码:

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

示例:

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中将指定列表的元素向指定距离进行旋转。

该方法对列表中的元素执行回环变位(circular rotation),根据指定的距离有效地将它们向左或向右移动。

内部代码:

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

示例:

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工具类提供了丰富的功能,但有一些鲜为人知的功能在某些情况下对开发者可能会很有用。


来源:Java学研大本营内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯