首页 > Java > java教程 > 正文

列表和集合的静态方法

WBOY
发布: 2024-07-16 16:57:12
原创
481 人浏览过

Collections 类包含在集合和列表中执行常见操作的静态方法。本节介绍了 Collections 类中用于数组列表的几个静态方法。 Collections 类包含 sortbinarySearchreverseshufflecopyfill 方法用于列表,以及 maxmindisjointFrequency 方法用于集合,如下图所示。

Image description

您可以使用 Comparable 接口中的 compareTo 方法按自然顺序对列表中的可比较元素进行排序。您还可以指定一个比较器来对元素进行排序。例如,以下代码对列表中的字符串进行排序。

列表 list = Arrays.asList("红色", "绿色", "蓝色");
Collections.sort(列表);
System.out.println(list);

输出为[蓝、绿、红]。

前面的代码按升序对列表进行排序。要按降序排序,您可以简单地使用 Collections.reverseOrder() 方法返回一个 Comparator 对象,该对象以与自然顺序相反的方式对元素进行排序。例如,以下代码按降序对字符串列表进行排序。

列表 list = Arrays.asList("黄色", "红色", "绿色", "蓝色");
Collections.sort(list, Collections.reverseOrder());
System.out.println(list);

输出为[黄、红、绿、蓝]。

您可以使用binarySearch方法在列表中搜索键。要使用此方法,列表必须按升序排序。如果键不在列表中,该方法返回 -(插入点 +1)。回想一下,插入点是项目在列表中出现的位置(如果存在)。例如,以下代码搜索整数列表和字符串列表中的键。

列表 list1 = Arrays.asList(2, 4, 7, 10, 11, 45, 50, 59, 60, 66);
System.out.println("(1)索引:" + Collections.binarySearch(list1, 7));
System.out.println("(2)索引:" + Collections.binarySearch(list1, 9));

列表 list2 = Arrays.asList("蓝色", "绿色", "红色");
System.out.println("(3)索引:" +
Collections.binarySearch(list2, "red"));
System.out.println("(4)索引:" +
Collections.binarySearch(list2, "青色"));

上述代码的输出是:

(1) 索引:2
(2) 指数:-4
(3)索引:2
(4) 指数:-2

您可以使用reverse方法来反转列表中的元素。例如,以下代码显示 [blue, green, red, Yellow].

列表 list = Arrays.asList("黄色", "红色", "绿色", "蓝色");
Collections.reverse(列表);
System.out.println(list);

您可以使用shuffle(List)方法对列表中的元素进行随机重新排序。例如,以下代码将 list.

中的元素打乱

列表 list = Arrays.asList("黄色", "红色", "绿色", "蓝色");
Collections.shuffle(列表);
System.out.println(list);

您还可以使用 shuffle(List, Random) 方法对具有指定 Random 对象的列表中的元素进行随机重新排序。使用指定的 Random 对象对于生成具有相同原始列表的相同元素序列的列表非常有用。例如,以下代码将 list.

中的元素打乱

列表 list1 = Arrays.asList("黄色", "红色", "绿色", "蓝色");
列表 list2 = Arrays.asList("黄色", "红色", "绿色", "蓝色");
Collections.shuffle(list1, new Random(20));
Collections.shuffle(list2, new Random(20));
System.out.println(list1);
System.out.println(list2);

您将看到 list1list2 在打乱前后具有相同的元素序列。

您可以使用 copy(det, src) 方法将源列表中的所有元素复制到同一索引上的目标列表。目标列表必须与源列表一样长。如果更长,则源列表中的其余元素不受影响。例如下面的
代码将 list2 复制到 list1.

列表 list1 = Arrays.asList("黄色", "红色", "绿色", "蓝色");
列表 list2 = Arrays.asList("白色", "黑色");
Collections.copy(list1, list2);
System.out.println(list1);

list1 的输出是 [white, black, green, blue]。 copy 方法执行浅复制:仅复制源列表中元素的引用。

您可以使用 nCopies(int n, Object o) 方法创建一个由指定对象的 n 个副本组成的不可变列表。例如,以下代码创建一个包含五个 Calendar 对象的列表。

列表 list1 = Collections.nCopies(5, new GregorianCalendar(2005, 0, 1));

通过 nCopies 方法创建的列表是不可变的,因此您无法添加、删除或更新列表中的元素。所有元素都有相同的引用。

可以使用fill(List list, Object o)方法将列表中的所有元素替换为指定元素。例如,以下代码显示[黑色,黑色,黑色]。

列表; list = Arrays.asList("红色", "绿色", "蓝色");
Collections.fill(list, "black");
System.out.println(list);

您可以使用 maxmin 方法来查找集合中的最大和最小元素。元素必须使用 Comparable 接口或 Comparator 接口进行比较。例如,以下代码显示集合中最大和最小的字符串。

集合 collection = Arrays.asList("红色", "绿色", "蓝色");
System.out.println(Collections.max(集合));
System.out.println(Collections.min(collection));

如果两个集合没有共同元素,disjoint(collection1, collection2) 方法将返回 true。例如,在以下代码中,disjoint(collection1, collection2) 返回 false,但 disjoint(collection1, collection3) 返回 true .

集合 collection1 = Arrays.asList("红色", "青色");
集合 collection2 = Arrays.asList("红色", "蓝色");
集合 collection3 = Arrays.asList("pink", "tan");
System.out.println(Collections.disjoint(collection1, collection2));
System.out.println(Collections.disjoint(collection1, collection3));

Frequency(collection, element) 方法查找集合中元素出现的次数。例如,频率(collection, "red")在以下代码中返回2

集合 collection = Arrays.asList("red", "cyan", "red");
System.out.println(Collections.Frequency(collection, "red"));

以上是列表和集合的静态方法的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!