Collections

Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供将集合对象设置为不可变、对集合对象实现同步控制等方法。

排序操作:

Collections提供对List集合元素进行排序的方法

  • void reverse(List list)
    反转指定list集合中元素顺序

  • void shuffle(List list)
    对List集合元素进行随机排序(模拟“洗牌”动作)

  • void sort(List list)
    根据元素的自然数序对指定List集合的元素按升序进行排序

  • void sort(List list,Comparator c)
    根据指定Comparator产生的顺序对List集合元素进行排序

  • void swap(List list ,int i ,int j)
    将指定的list集合中的i 处元素和 j 处元素进行交换

  • void rotate(List list ,int distance)
    当distance为正数时,将list集合的后distance个元素“整体”移到前面;当distance为负数时,将list集合的前distance个元素“整数”移到后面。该方法不会改变集合的长度。

示例:

package com.collections;import java.util.ArrayList;
import java.util.Collections;public class CollectionList {public static void main(String[] args) {ArrayList  list = new ArrayList();list.add(2);list.add(-2);list.add(9);list.add(5);System.out.println(list);//[2, -2, 9, 5]//对指定list集合进行升序排序Collections.sort(list);System.out.println(list);//[-2, 2, 5, 9]//将指定的list集合中的i 处元素和 j 处元素进行交换Collections.swap(list, 0, 2);System.out.println(list);//[5, 2, -2, 9]//将list集合元素的次序反转Collections.reverse(list);System.out.println(list);//[9, 5, 2, -2]//将指定list集合元素进行“洗牌”,随机排序Collections.shuffle(list);System.out.println(list);//[-2, 5, 9, 2]}
}

模拟洗牌示例:

package com.collections;import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;/*** Collections 棋牌类游戏 示例* * @author hhmsw*/
public class ColiectionsCardGame {// 模拟5个玩家private static final int PLAYSNUM = 5;// 棋牌种类private static final String[] CardTypes = { "红桃", "梅花", "方片", "黑桃" };// 棋牌的数值private static final String[] CardValues = { "2", "3", "4", "5", "6", "7","8", "9", "10", "J", "Q", "K", "A" };// Cards 以一局中剩余的牌private List<String> cards = new LinkedList<String>();// 玩家数量private String[] players = new String[PLAYSNUM];// 玩家手中的牌private List<String>[] playerCards = new List[PLAYSNUM];// 初始化牌,并洗牌private void initCards() {for (int i = 0; i < CardTypes.length; i++) {for (int j = 0; j < CardValues.length; j++) {cards.add(CardTypes[i] + CardValues[j]);}}System.out.println(cards);// 洗牌Collections.shuffle(cards);System.out.println(cards);System.out.println("共" + cards.size() +"张");}// 初始化玩家,玩家至少为2人以上,一人没得玩private void initPlayer(String... names) {if (names.length < 2 || names.length > PLAYSNUM) {System.out.println("玩家数量不对");return;}for (int i = 0; i < names.length; i++) {players[i] = names[i];}for (String name : players) {System.out.println(name);}}// 初始化玩家手中的牌private void initPlayerCard() {for (int i = 0; i < players.length; i++) {playerCards[i] = new LinkedList<String>();}}// 显示玩家手中的牌private void showPlayersCards(String...name) {for (int i = 0; i < name.length; i++) {System.out.println(players[i] + "的牌:" + playerCards[i]);}}// 为玩家发牌private void deliveerCards(String... name) {for (int i = 0; i < name.length; i++) {for (int j = 0; j < PLAYSNUM; j++) {playerCards[i].add(cards.get(0));cards.remove(0);}}}private void remainCards(){System.err.println("剩余:"+cards.size() + "张" );System.err.println("剩余牌:"+cards );}public static void main(String[] args) {String[] players = { "孙悟空", "如来佛祖", "玉皇大帝", "太白金星", "观音" };ColiectionsCardGame c = new ColiectionsCardGame();c.initCards();c.initPlayer(players);c.initPlayerCard();c.deliveerCards(players);c.showPlayersCards(players);c.remainCards();}}
输出结果:
...
[梅花3, 黑桃10, 梅花Q, 方片8, 梅花9, 红桃10, 黑桃Q, 黑桃9, 黑桃7, 梅花6, 红桃9, 梅花10, 方片10, 红桃4, 梅花J, 方片3, 黑桃8, 黑桃2, 方片6, 红桃5, 梅花K, 方片9, 红桃Q, 黑桃5, 红桃6, 方片J, 梅花2, 黑桃3, 红桃A, 黑桃4, 黑桃J, 黑桃6, 梅花4, 黑桃K, 红桃3, 梅花8, 方片7, 红桃K, 方片A, 梅花A, 红桃2, 方片4, 方片Q, 方片2, 梅花5, 梅花7, 方片5, 红桃8, 红桃J, 黑桃A, 红桃7, 方片K]
共52张
...
孙悟空的牌:[梅花3, 黑桃10, 梅花Q, 方片8, 梅花9]
如来佛祖的牌:[红桃10, 黑桃Q, 黑桃9, 黑桃7, 梅花6]
玉皇大帝的牌:[红桃9, 梅花10, 方片10, 红桃4, 梅花J]
太白金星的牌:[方片3, 黑桃8, 黑桃2, 方片6, 红桃5]
观音的牌:[梅花K, 方片9, 红桃Q, 黑桃5, 红桃6]
...

Collections 查找、替换操作

方法:

int binarySearch(List list,Object obj)
使用二分搜索法搜索指定的List集合,以获得指定对象在List集合中的索引。前提必须保证List中的元素已处于有序状态。
Object max(Collection coll)
返回集合中最大元素。
Object max(Collection coll,Comparator comp)
根据Comparator指定顺序,返回指定集合中最大的元素。
Object min(Collection coll)
返回集合中最小元素。
Object min(Collection coll ,Comparator comp)
根据Comparator指定顺序,返回指定集合中最小的元素。
void fill(List list ,Object obj)
使用指定元素obj替换指定List集合中所有元素。
int frequency(Collection c, Object o)
返回指定集合中指定元素出现的次数。
int indexOdSubList(List source,List target)
返回子List对象在父List对象中第一次出现的位置索引;如果父List中没有出现这样的子List,返回-1。
int lastIndexOfSubList(List source,List target)
返回子List对象在父List对象中最后一次出现的位置索引;如果父List中没有出现这样的子List,返回-1。
boolean replaceAll(List list ,Object oldVal,Object newVal)
使用一个新值newVal替换List集合中所有旧值oldVal。

示例:

package com.collections;import java.util.ArrayList;
import java.util.Collections;public class CollectionsFindList {public static void main(String[] args) {ArrayList list = new ArrayList();list.add(-1);list.add(2);list.add(0);list.add(5);list.add(5);System.out.println(list);//[-1, 2, 0, 5]//使用二分搜索法搜索指定的List集合,以获得指定对象在List集合中的索引System.out.println(Collections.binarySearch(list, 0));//2//返回集合中最大元素System.out.println(Collections.max(list));//5//返回集合中最小元素System.out.println(Collections.min(list));//-1//将集合中元素值为0的,替换成1Collections.replaceAll(list, 0, 1);//[-1, 2, 1, 5]System.out.println(list);//将集合中所有元素值,替换成5Collections.fill(list, 5);//返回元素值5在集合中出现的次数System.out.println(list);//[5, 5, 5, 5]System.out.println(Collections.frequency(list, 5));//4ArrayList list2 = new ArrayList();list2.add(5);//返回子List对象在父List对象中第一次出现的位置索引;如果父List中没有出现这样的子List,返回-1System.out.println(Collections.indexOfSubList(list, list2));//3//返回子List对象在父List对象中最后一次出现的位置索引;如果父List中没有出现这样的子List,返回-1。System.out.println(Collections.lastIndexOfSubList(list, list2));//4}
}

Java集合Collections(二)

Even a small star shines in the darkness.
星星再小,也会发光。

Java集合工具类Collections(一)相关推荐

  1. java 集合工具类_Java集合中Collections工具类总结

    Collections工具类 Collections 是一个操作 Collection(Set. List )和 Map 等集合的工具类 Collection和Collections的区别? Coll ...

  2. Java集合工具类:Collections

    Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里 提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象实现同步控制等方法. 一. 排序 ...

  3. Java集合(8)--集合工具类Collections

    Collections 是一个操作 Set.List 和 Map 等集合的工具类. Collections 中提供了一系列静态的方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变. ...

  4. Java 常用工具类 Collections 源码分析

    文章出处 文章出自:安卓进阶学习指南 作者:shixinzhang 完稿日期:2017.10.25 Collections 和 Arrays 是 JDK 为我们提供的常用工具类,方便我们操作集合和数组 ...

  5. 工具类 | 集合工具类Collections介绍

    前言 通过本文,你可以学习到 Collections 工具类的一些方法使用,在编码过程中都是非常实用的. 空集合 一个元素的集合 不可变集合 线程安全集合 批量增加 填充 交换位置 排序 逆序 随机排 ...

  6. Java集合工具类的一些坑,Arrays.asList()、Collection.toArray()...

    Arrays.asList() 使用指南 最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:Java Array to List Examples 感觉挺不错的,但是还不是特 ...

  7. Java集合工具类(三)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集......

    为什么80%的码农都做不了架构师?>>>    /**      * 用该方法来代替 { @code new LinkedList<E>()} 方式获得新的 { @cod ...

  8. Java集合篇:Map接口、Map接口的实现类、Collections集合工具类

    目录 一.Map接口 1.1 Map接口概述 1.2 Map接口常用功能 二.Map接口的实现类 2.1 Map实现类之一:HashMap 2.1.1 HashMap概述 2.1.2 HashMap的 ...

  9. 【小白学Java】D26 》》》Collections集合工具类

    [友情链接]---–->Java中的各种集合大汇总,学习整理 [友情链接]----–> collection集合 [友情链接]----–> ArrayList集合及其常用功能 [友情 ...

最新文章

  1. 命令行切换到conda环境_Anaconda命令行常用操作
  2. STM32 ISP 下载程序, C源码,
  3. 给要学习.NET(c#语言)的新手一些学习方法
  4. 手把手教你学会用Delve调试Go程序
  5. 【SpringCloud】Spring cloud Alibaba Sentinel 系统规则
  6. 深入探讨JavaScript函数
  7. tensorflow错误:InvalidArgumentError (see above for traceback): Cannot assign a device for operation
  8. python生成的字符画怎么查看_通过python将图片生成字符画
  9. 通讯录获取源码_[源码和文档分享]基于Java语言的C/S模式通讯录备份和查询软件...
  10. MZD Studios|感谢你们,我挺过来了,不做老外舔狗 -Jerome Alan Chan
  11. 最新区块链开发教程汇总
  12. 使用Spring Boot开发财务系统视频
  13. 凸优化理论基础1--仿射集
  14. 微信小程序地址自动识别
  15. Notepad++ 无法安装 HexEditor 插件 / 安装之后闪退
  16. ubuntu下使用testerSunshine12306抢票程序
  17. 027-Mac触摸板实现窗口移动
  18. 旁边工位的兄弟,居然“偷看”美女小编直播?
  19. 最佳 React UI 组件库,前端开发必备!
  20. 【时间序列】时间序列预测方法总结(对应文章给出详细链接)

热门文章

  1. rk嵌入式 实现多路窗口0拷贝gpu渲染
  2. coco evaluate
  3. Text Scanner for Mac(超快速ocr文字识别功能介绍)
  4. 数据库 Departments,Salary,Employess三个表的数据;
  5. 全球及中国工业结晶器行业运营动态及投资潜力预测报告2022~2027年
  6. CentOS 安装 SS5 配置启动
  7. C#之类型.TryParse(参数A, out 类型 xx)的用法
  8. RT5350无线视频监控
  9. python鸭子类型与protocol
  10. Tiny6410移植MT7601U方案的USB无线网卡 (360随身WiFi2代3代)(通过测试,串口数据很少)