Collections 工具类

  * Collection与Collections区别

    Collection 接口,(大部分集合类的实现接口)

    Collections 工具类(针对列表)

* Collections工具类常用方法  

   1.父类的引用指向子类的对象(复习)

    2.sort(List list)排序

    3.sort(List list, Comparator comparator);排序

    4.binarySearch,搜索指定元素索引,前提列表必须有序

    5.reverse反转

   6.重新洗牌shuffle方法

    7.swap交换,交换两个索引位置元素,Collections.swap(list, 1, 2);

  * 测试Collections工具类方法代码:  

    

package method;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/***
* 1.父类的引用指向子类的对象
* 2.sort(List list)排序
* 3.sort(List list, Comparator comparator);排序
* 4.binarySearch,搜索指定元素索引,前提列表必须有序
* 5.reverse反转
* 6.重新洗牌shuffle
* 7.swap交换,交换两个索引位置元素,Collections.swap(list, 1, 2);
* @author Administrator
*
*/
public class CollectionsDemo {
public static void main(String[] args) {
List list=new ArrayList(); //添加测试数据
list.add("a");
list.add("b");
list.add("d");
list.add("c");
list.add("e"); System.out.println(Arrays.toString(list.toArray()));
//sort排序,升序
Collections.sort(list); System.out.println(Arrays.toString(list.toArray())); //使用sort降序排序
Collections.sort(list, new Comparator<String>(){ @Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
int result=o2.length()-o1.length();
int length=result>0?o2.length():o1.length(); char[]a1=o1.toCharArray();
char[]a2=o2.toCharArray();
for(int i=0;i<length;i++){
if(a1[i]>a2[i]){
return -1;
}else if(a1[i]==a2[i]){
return 0;
}else{
return 1;
}
}
return result;
}
}); System.out.println(Arrays.toString(list.toArray()));
//二分法检测元素索引
int indexResult = Collections.binarySearch(list, "c"); System.out.println(indexResult); //reverse反转
Collections.reverse(list);
System.out.println(Arrays.toString(list.toArray())); //重新洗牌shuffle
Collections.shuffle(list);
System.out.println(Arrays.toString(list.toArray())); //swap交换,交换两个索引位置元素
Collections.swap(list, 1, 2);
System.out.println(Arrays.toString(list.toArray()));
}
}

Collections常用方法测试

  * 模拟斗地主,发牌代码

    

package method;

import java.util.ArrayList;
import java.util.Collections; /***
* 模拟斗地主,洗牌
* @author Administrator
*
*/
public class Collections_card { public static void main(String[] args) {
ArrayList cards = new ArrayList(); ArrayList play1 = new ArrayList();
ArrayList play2 = new ArrayList();
ArrayList play3 = new ArrayList(); ArrayList dipai = new ArrayList();
//54张牌
for(int i=0;i<54;i++){
cards.add(i);
}
Collections.shuffle(cards);
//三个玩家分牌
for(int i=0;i<51;i+=3){
play1.add(cards.get(i));
play2.add(cards.get(i+1));
play3.add(cards.get(i+2));
}
//底牌
for(int i=51;i<54;i++){
dipai.add(cards.get(i));
} //输出检查效果
System.out.println("玩家一:"+play1);
System.out.println("玩家二:"+play2);
System.out.println("玩家三:"+play3);
System.out.println("底牌:"+dipai);
}
}

模拟斗地主发牌

Java_Collections工具类的更多相关文章

  1. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  2. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  3. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  4. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  5. Guava库介绍之实用工具类

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...

  6. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

  7. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...

  8. WebUtils-网络请求工具类

    网络请求工具类,大幅代码借鉴aplipay. using System; using System.Collections.Generic; using System.IO; using System ...

  9. JAVA 日期格式工具类DateUtil.java

    DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.ut ...

随机推荐

  1. 兆芯 服务器 win2012/win7装机总结

    兆芯cpu 服务器 win2012/win7装机总结 一.设置U盘启动装机 启动后,esc进入bios修改下图两个地方,都要改,然后保存. 二.重启计算机,进入win安装界面,会出现无法安装,原因是: ...

  2. 132.leecode-Palindrome Partitioning II

    这个题需要两个dp,一个保存从i到j是否为回文串 另一个保存0到i的最小的分割 下面是我的效率不太高的代码 class Solution { public: int minCut(string s) ...

  3. Java编程实现多线程TCP服务器完整实例

    Socket ·功能:TCP客户端套接字 ·构造方法:   Socket(InetAddress address, int port)   创建一个流套接字并将其连接到指定 IP 地址的指定端口号 · ...

  4. Python编程练习:平方值格式化

    问题描述:获得用户输入的一个整数N,计算N的平方值:结果采用宽度20字符方式居中输出,空余字符采用减号(-)填充.如果结果超过20个字符,则以结果宽度为准. 示例: 源码: a = int(input ...

  5. Ubuntu 16.04下Samba服务器搭建和配置(配截图)

    一.相关介绍 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和 ...

  6. 每天学点SpringCloud(一):使用SpringBoot2.0.3整合SpringCloud

    最近开始学习SpringCloud,在此把我学习的过程记录起来,跟大家分享一下,一起学习.想学习SpringCloud的同学赶快上车吧. 本次学习使用得SpringBoot版本为2.0.3.RELEA ...

  7. Python面向对象6:抽象类和自定义类

    抽象类- 抽象方法: 没有具体实现内容的方法成为抽象方法- 抽象方法的主要意义是规范了子类的行为和接口- 抽象类的使用需要借助abc模块 import abc - 抽象类:包含抽象方法的类叫抽象类,通 ...

  8. 随手用python写一个下载jdk源码爬虫

    最近在研读jdk源码,网上找了下资源,发现都不完整. 后来新发现了一个有完整源码的地方,主要包括了java,c,c++的东西,装逼需要,就想拿来玩玩.但是,找了好多种下载打开的方式,发现都不对.于是, ...

  9. redis5.0新特性

    1. redis5.0新特性 1.1. 新的Stream类型 1.1.1. 什么是Stream数据类型 抽象数据日志 数据流 1.2. 新的Redis模块API:Timers and Cluster ...

  10. 利用node 剥取其他网站的文档数据结构 ---

    1.如何利用nodejs获取其他网站的文档结构呢 以下是代码演示------! //首先需要引入一些核心模块 var http = require('http'); var fs = require( ...