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. 去掉字符空格js

    1. 去掉字符串两端的空格 String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, "&quo ...

  2. bash 管理小脚本

    #!/bin/bash shell_user="root" shell_pass="1233" shell_port="22" shell_ ...

  3. Java语言中的面向对象特性

    面向对象的基本特征 1.封装性 封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义: ◇ 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位( ...

  4. Android 流媒体技术见解

    一.技术关键点 1. 音频采集:设置合理的采样参数,包括采样率.通道数.采样深度. 2. 视频采集:手机摄像头采集输出的格式(NV12/NV21/YV12),要注意相互间的转换,以及采集出来图像的方向 ...

  5. 吴恩达机器学习笔记13-正规方程(Normal Equation)

    到目前为止,我们都在使用梯度下降算法,但是对于某些线性回归问题,正规方程方法是更好的解决方案.如: 即: 运用正规方程方法求解参数: 注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺 ...

  6. Python shuffle() 函数

    描述 shuffle() 方法将序列的所有元素随机排序. 语法 以下是 shuffle() 方法的语法: import random random.shuffle (lst ) 注意:shuffle( ...

  7. Python中parameters与argument区别

    定义(define)一个带parameters的函数: def addition(x,y): return (x+y) 这里的x,y就是parameter 调用addition(3,4) 调用(cal ...

  8. python的函数学习2

    名称空间 用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间. 比如执行test.py: python test.py .python解释器先启动,因而首先加载内置名称空间 ...

  9. 记录js new Date日期处理的一个坑

    记录js日期处理的一个坑   当前时区为北美东部时区时, new Date('2019-4-1') new Date('2019-04-01') 结果是相关一个月的. 如下图   new Date(' ...

  10. 五分钟了解node,cnpm和yarn

    1.静态网页和动态网页 动态网页:数据可以进行交互,动态改变数据 2.node node是基于chrome的V8引擎的javascript的运行环境,node中的事件机制以及非阻塞式的I/O式模式,使 ...