Collections

1. 概述

  • 注意区别Collection:是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
  • 由静态方法组成
  • 是针对集合操作的工具类

2. 常用方法

方法名 说明
public static <T extends Comparable<? super T>> void sort(List list) 将指定的列表按升序排序
public static void reverse(List<?> list) 反转指定列表中元素的顺序
public static void shuffle(List<?> list) 使用默认的随机源随机排列指定的列表

2.1 sort()

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class Demo {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(30);list.add(20);list.add(50);list.add(10);System.out.println(list);Collections.sort(list);//自然顺序 升序排序System.out.println(list);//[10, 20, 30, 50]}
}

2.2 reverse()

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class Demo {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(30);list.add(20);list.add(50);list.add(10);System.out.println(list);Collections.reverse(list);//反转System.out.println(list);//[10, 50, 20, 30]}
}

2.3 shuffle()

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class Demo {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(30);list.add(20);list.add(50);list.add(10);System.out.println(list);Collections.shuffle(list);//随机排序 模拟洗牌System.out.println(list);}
}

3. 案例

3.1 ArrayList存储学生对象并排序

  • 测试类
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;// ArrayList存储学生对象并排序
/*
1.定义学生类
2.创建ArrayList学生对象
3.创建学生对象
4.把学生添加到集合
5.使用Collections对ArrayList集合排序
6.遍历集合*/
public class Test {public static void main(String[] args) {//创建ArrayList集合ArrayList<Student> array = new ArrayList<>();//创建学生对象Student s1 = new Student("zhangsan", 16);Student s2 = new Student("lisi", 17);Student s3 = new Student("wangwu", 18);Student s4 = new Student("zhaoliu", 19);Student s5 = new Student("heqi", 17);//将学生对象添加到ArrayList集合array.add(s1);array.add(s2);array.add(s3);array.add(s4);array.add(s5);//利用Collections.sort进行排序,内部类Comparator给定排序条件Collections.sort(array, new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {int num = s1.getAge() - s2.getAge();int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;return num2;}});for (Student s : array) {System.out.println(s.getName() + "," + s.getAge());}}
}
  • 学生类
public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

3.2 模拟斗地主发牌、洗牌、看牌

import java.util.ArrayList;
import java.util.Collections;//模拟洗牌、发牌、看牌
/*
1.创建一个集合对象<牌盒>,用ArrayList集合使用
2.在牌盒里装牌
3.洗牌:Collections.shuffle()
4.发牌:遍历集合,给三个玩家发牌
5.看牌*/
public class Test01 {public static void main(String[] args) {//创建ArrayList集合,用于 存放牌ArrayList<String> array = new ArrayList<>();//创建花色 牌号String[] color = {"♦","♠","♥","♣"};String[] number = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};//将花色和牌号拼接成牌for (String s : color) {for (String s1 : number) {String s2 = s + s1;array.add(s2);}}//大王小王不要落下了array.add("大王");array.add("小王");//将牌的存放顺序打乱Collections.shuffle(array);//创建四个集合分别存放 三个人的牌和底牌ArrayList<String> wx = new ArrayList<>();ArrayList<String> hj = new ArrayList<>();ArrayList<String> xlj = new ArrayList<>();ArrayList<String> dp = new ArrayList<>();//发牌 if条件中取余,几个人就跟几取余for (int i = 0; i < array.size(); i++) {String poker = array.get(i);//这里判断是否是最后三张牌if (i>=array.size()-3){dp.add(poker);}else if (i%3 == 0){wx.add(poker);}else if (i%3 == 1){hj.add(poker);}else if (i%3 == 2){xlj.add(poker);}}//调用方法lookpoker("王",wx);lookpoker("何",hj);lookpoker("辣鸡",xlj);lookpoker("底牌",dp);}//看牌方法public static void lookpoker(String name,ArrayList<String> array){System.out.println(name + "的牌是:");//遍历输出牌for (String s : array) {System.out.print(s + " ");}System.out.println();}
}

3.2 模拟斗地主Plus

import java.util.*;/*
1.创建HashMap,键是编号,值是牌
2.创建ArrayList,存储编号
3.创建花色数组和点数数组
4.从0开始往HashMap里面存储编号,并存储对应的牌。同时往ArrayList里面存储编号
5.洗牌(洗的是编号),用Collections的shuffle()方法实现
6.发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合接收)
7.定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
8.调用看牌方法*/
public class TestPlus01 {public static void main(String[] args) {//创建一个HashMap集合,用于存放编号和牌HashMap<Integer, String> hm = new HashMap<>();//创建一个ArrayList集合,用于存放编号ArrayList<Integer> array = new ArrayList<>();//创建花色String[] color = {"♦","♠","♥","♣"};//创建牌号String[] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//创建一个索引,默认值为0int index = 0;/*这里注意区别上一个案例*///外层循环,遍历牌号for (String s : number) {//第二层循环,遍历花色for (String s1 : color) {String s2 = s1 + s; // 将花色与牌号拼接hm.put(index,s2);// 将编号和牌存入HashMap集合array.add(index);// 将编号存入ArrayList集合index++; //每做一次循环编号+1}}hm.put(index,"小王");array.add(index);index++;hm.put(index,"大王");array.add(index);//创建TreeSet集合,这里使用TreeSet集合是因为TreeSet集合能保证编号是排序的TreeSet<Integer> wx = new TreeSet<Integer>();TreeSet<Integer> hj = new TreeSet<Integer>();TreeSet<Integer> xlj = new TreeSet<Integer>();TreeSet<Integer> dp = new TreeSet<Integer>();//随机排序编号Collections.shuffle(array);//将乱序的编号存入每个TreeSet集合for (int i = 0; i < array.size(); i++) {Integer key = array.get(i);//如果长度大于array.size()-3,就表示只剩三张牌,将三张牌存入底牌if (i>= array.size()-3){dp.add(key);}else if(i%3==0){//取余,几个人就跟几取余wx.add(key);}else if(i%3==1){hj.add(key);}else if(i%3==2){xlj.add(key);}}//调用方法lookpoker("王",wx,hm);lookpoker("何",hj,hm);lookpoker("辣鸡",xlj,hm);}//看牌方法 参数列表(姓名,TreeSet集合--存放的是发好的编号,HashMap集合--通过编号这个键获取对应的值)public static void lookpoker(String name,TreeSet<Integer> ts,HashMap<Integer, String> hm){System.out.println(name + "的牌是:");for (Integer key : ts) {String poker = hm.get(key);System.out.print(poker + " ");}System.out.println();}
}

集合——Collections相关推荐

  1. Day18JavaSE——Map集合Collections工具类集合案例练习

    Day18JavaSE--Map集合&Collections工具类&集合案例练习 文章目录 Day18JavaSE--Map集合&Collections工具类&集合案例 ...

  2. java(五)-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类

    day05[迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类] 主要内容 Collection集合的遍历方式: 迭代器. foreach(增强for循环) JDK ...

  3. Java集合,Collections

    一:集合的继承关系 数据在底层的存储方式只有两种 一种是顺序存储(也就是存储的数组) 一种是链式存储 注:数组一旦初始化后长度就不可变  Collection接口:方法:                ...

  4. Java中的集合---------Collections 类---集合的工具类 Comparator比较器

    Collections 2.1 常用功能 java.utils.Collections是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean ...

  5. Java基础学习系列--(五)【迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类】

    第一章 Iterator迭代器 1.1 Iterator接口 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator. 想要遍历Coll ...

  6. OnJava8读书笔记(java编程思想)--集合Collections

    本篇博文参考on Java8中文版编写 本编博文参考java编程思想第四版编写 文章目录 概述 一.泛型和类型安全的集合 二.基本概念 三.添加元素组(Adding Groups of Element ...

  7. 运用java集合Collections对List进行max和min操作

    我想创建了一个List,里面有一堆的数,一个需求是去掉一个最大值,一个最小值,List有remove的方法,但是找到最大值和最小值的方法不在List里,而是Collections的静态方法.真心觉得还 ...

  8. JAVA的rotate怎么用,Java集合Collections.rotate用法

    函数定义 public static void rotate([List]> list, int distance) 功能描述 按指定距离旋转列表中的元素. PS:个人认为应该叫循环移位比较合适 ...

  9. 黑马程序员_Java(登陆注册案例,set集合,map集合,Collections)

    ------- android培训. java培训.期待与您交流! ---------- 生命不息,奋斗不止!做个斗士!!!!! 1:登录注册案例 需求:用户登录注册案例. 按照如下的操作,可以让我们 ...

最新文章

  1. 分享8个非常实用但是名气不大的软件
  2. (八) stm8程序段定位,理解lkf文件
  3. 图像识别DM8127开发攻略——开发环境搭建
  4. springboot-websocket-netty
  5. [css] 使用css实现彩虹的效果
  6. 【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤
  7. 工程师已经被虐到不行不行的了
  8. OpenVINO InferenceEngine之FormatParser
  9. TextScanner:旷视新作文字识别新突破,确保字符阅读顺序
  10. Mysql学习总结(39)——49条MySql语句优化技巧
  11. java filechooser_Java—FileChooser(示例代码)
  12. ProxySQL(读写分离)部署
  13. nginx 配置支持URL HTML5 History 模式 与 设置代理
  14. 监控延迟严重怎么解决_监控画面故障解决:网络监控画面没有图像显示或无视频信号怎么办...
  15. 手机谷歌浏览器设置不阻止弹窗弹出
  16. 关于APS生产排产软件选择,有哪几个要素?
  17. xshell 安装包(百度网盘)+安装过程连接虚拟机注意事项
  18. PHPExcel浏览器输出Excel2007出错
  19. ajax上传图片到又拍云,又拍云存储(UpYun)的.NET Core填坑
  20. 智能网联汽车——深度学习与无人驾驶(一)

热门文章

  1. hexo博客搭建及其美化
  2. 双因素认证,让用户的帐号安全无忧
  3. Error:Cannot run program XXX (in directory C:\Users\Administrator\.IntelliJIdeaXXX
  4. 商务数据分析与应用类毕业论文文献有哪些?
  5. C语言 程序 素数圈圈
  6. 操作系统中的概念详解
  7. eNSP实验日记二划分Vlan
  8. DPDK和VPP地址池
  9. Python中[ : n]、[m : ]、[-n]、[:-n]、[::-n]、[m::-n]和[m:]的含义
  10. 学习Word必学这一招——样式