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. wxPython 的简单框架实例

    #coding:utf-8 import wx def load(event): file = open(filename.GetValue(),'r') contents.SetValue(file ...

  2. Python学习笔记-基础2

    1.列表list 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 1.定义列表 names = ["Ronaldo","Messi" ...

  3. Redis-06.Cluster

    Redis Cluster是一个高性能高可用的分布式系统.由多个Redis实例组成的整体,数据按照一致性哈希算法存储分布在多个Redis实例上,并对使用虚拟槽(Slot)对一致性哈希算法进行改进,通过 ...

  4. 与其他相似软件对比,win10中个人助理conrtana具备哪些独特的功能

    目前,Cortana 可以回答各种口头问题,直接设置提醒,或者提供位置导航,并支持语音命令处理各项事务,而且随时间的推移学习更多内容,从而变得更加个性化和实用.简单而言,集成在 Edge 浏览器中的 ...

  5. Java虚拟机:内存分配策略

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Java中提倡的自动内存管理机制最终可以归结为自动化的解决两个问题:给对象分配内存和回收分配给对象的内存.在之前的博客中已经详细讲解了内存 ...

  6. ZKWeb网页框架2.1正式发布

    2.1.0更新的内容有 更新引用类库 NHibernate 5.1.0 Npgsql 3.2.7 MySqlConnector 0.37.0 Dapper 1.50.4 Dommel 1.10.1 Z ...

  7. [Postman]Cookies(12)

    Postman的本机应用程序提供  MANAGE COOKIES  模式,允许您编辑与每个域关联的Cookie. 前往cookie经理 要打开MANAGE COOKIES模式,请单击“ 发送”按钮下的 ...

  8. java中的全局变量如何实现?ThreadLocal~

    全局变量就是不管你在哪里,都能够直接引用的变量,还不用担心各种问题.每个语言都有自己的全局变量,我想! 一般地,面向过程的语言当中,可能就是一个声明在最前面的变量,后面的代码直接引用,就成了全局变量! ...

  9. SQLServer脚本编写

    临时接到通知,需要临时编写一个SQL Server的脚本,供出差的同事使用一下. 我当时心想这个SQL Server脚本听都没听说过,但是组织说决定就是你了,那我就只能硬着头皮上了. 脚本实现的功能比 ...

  10. 3-7 Vue中的列表渲染

     举个案例:循环data中的list的值在div中,并显示相应的index值. 关于数组的循环: //显示效果如下图: //一般的列表渲染最好带一个key值,要把key值设置为唯一值的话,可以选择in ...