package cn.itcast.p2.toolclass.collections.demo;

 import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet; import cn.itcast.p2.comparator.ComparatorByLength; public class CollectionsDemo { public static void main(String[] args) {
/*
* Collections:是集合框架的工具类。
* 里面的方法都是静态的。
*/ demo_4(); } public static void demo_4() {
List<String> list = new ArrayList<String>(); list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zz");
list.add("cba");
list.add("nbaa");
Collections.sort(list);
System.out.println(list); /*
* 替换
* static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)
* 使用另一个值替换列表中出现的所有某一指定值。
*
* 随机置换
* static void shuffle(List<?> list)
* 使用默认随机源对指定列表进行置换。
* static void shuffle(List<?> list, Random rnd)
* 使用指定的随机源对指定列表进行置换。
*
* 替换
* static <T> void fill(List<? super T> list, T obj)
* 使用指定元素替换指定列表中的所有元素。
*/
Collections.replaceAll(list, "cba", "nba");
System.out.println(list); Collections.shuffle(list);
System.out.println(list); Collections.fill(list, "ccc");
System.out.println(list); }
/*
* demo_4结果:[aa, abcde, cba, cba, nbaa, zz]
[aa, abcde, nba, nba, nbaa, zz]
[abcde, zz, nba, aa, nbaa, nba] 每次运行结果都不同
[ccc, ccc, ccc, ccc, ccc, ccc] */ public static void demo_3() {
/*
* 反转顺序
* static <T> Comparator<T> reverseOrder()
* 返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。
* static <T> Comparator<T> reverseOrder(Comparator<T> cmp)
* 返回一个比较器,它强行逆转指定比较器的顺序。
*/
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new ComparatorByLength())); ts.add("abc");
ts.add("cba");
ts.add("hahaha");
ts.add("aa");
ts.add("zzz"); System.out.println(ts);
}
/*
* demo_3运行结果: [hahaha, zzz, cba, abc, aa]
*/ public static void demo_2() {
List<String> list = new ArrayList<String>(); list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zz");
list.add("cba");
list.add("nbaa");
Collections.sort(list);
System.out.println(list); /*
* 二分搜索法
* static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
* static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
*/
int index = Collections.binarySearch(list, "cba");
System.out.println("index:"+index); //
int index2 = Collections.binarySearch(list, "aaa");
System.out.println("index:"+index2); //-2 如果没有所要搜寻的key存在,则返回(-(插入点)-1) /*
* 获取最大值
* static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
* 根据元素的自然顺序,返回给定 collection 的最大元素。
* static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
* 根据指定比较器产生的顺序,返回给定 collection 的最大元素。
*
* 获取最小值 类似上面
*/
String max = Collections.max(list, new ComparatorByLength());
System.out.println("max:"+max); } public static void demo_1() {
List<String> list = new ArrayList<String>(); list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zz");
list.add("cba");
list.add("nbaa"); System.out.println(list); /*
* 两种比较方式
*/ //对list集合进行指定顺序的排序。
//static <T extends Comparable<? super T>> void sort(List<T> list)
Collections.sort(list);
// mySort(list); //sort的执行原理
System.out.println(list); //static <T> void sort(List<T> list, Comparator<? super T> c)
Collections.sort(list, new ComparatorByLength());
// mySort(list , new ComparatorByLength()); // 上一条代码的执行原理
System.out.println(list);
} //sort(List<T> list, Comparator<? super T> c) 执行原理
public static <T> void mySort(List<T> list, Comparator<? super T> comp) {
for (int i=0; i<list.size()-1; i++)
for (int j=i+1; j<list.size(); j++)
{
if (comp.compare(list.get(i), list.get(j)) > 0)
Collections.swap(list, i, j);
}
} //sort(List<T> list)的执行原理
public static <T extends Comparable<? super T>> void mySort(List<T> list) { for (int i=0; i<list.size()-1; i++)
for (int j=i+1; j<list.size(); j++)
{
if (list.get(i).compareTo(list.get(j)) > 0)
Collections.swap(list, i, j); //交换两个元素
}
} }

类Collections的静态方法的使用(代码)的更多相关文章

  1. 类Collections的静态方法

    类Collections的静态方法 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成. 排序 static <T extends Comparable& ...

  2. Java基础 @org.junit.Test-单元测试方法 + 操纵Collection和Map的工具类 : Collections 的sort/binarySearch/max/min等静态方法

      单元测试代码:  ( 在IDEA中先输入'@Test '然后根据提示进行自动修订即可!!运行时直接运行即可! 若有多个单元测试块的时候,直接把鼠标放在哪里就自动在哪里运行那个单元块) import ...

  3. java中的静态变量、静态方法与静态代码块详解与初始化顺序

      我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...

  4. JVM 字节码(四)静态方法、构造代码、this 以及 synchronized 关键字

    JVM 字节码(四)静态方法.构造代码.this 以及 synchronized 关键字 一.静态代码 public class ByteCodeStatic { private static fin ...

  5. java 多线程3:Thread类中的静态方法

    Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...

  6. Java中的静态变量、静态方法、静态代码块

    转载自http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)静态方法(1)在Java里,可以定义一个不需要创建对 ...

  7. 第7.17节 Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析

    第7.17节  Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析 静态方法也是通过类定义的一种方法,一般将不需要访问类属性但是类需要具有的一些能力可以静态方法提供. 一 ...

  8. java中的静态变量,静态方法与静态代码块详解

    java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...

  9. WebMethod在webservice里面非静态方法能调用,在页面类里面,静态方法才能调用

    WebMethod在webservice里面非静态方法能调用,在页面类里面,静态方法才能调用

随机推荐

  1. MySQL5.6:基于GTID的主从复制

    一.GTID简介 MySQL 5.6 的新特性之一,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力. 什么是GTID? 官方文档:http://dev.mysq ...

  2. 初识Android NDK

    本文介绍Windows环境下搭建Android NDK开发环境,并创建一个简单的使用Native代码的Android Application. 一.环境搭建 二.JNI函数绑定 三.例子 一.环境搭建 ...

  3. post请求接口

    /// <summary> /// post 调用接口 /// </summary> /// <param name="xmlRequest"> ...

  4. 阿里中间件——diamond

    一.前言 最近工作不忙闲来无事,仔细分析了公司整个项目架构,发现用到了很多阿里巴巴集团开源的框架,今天要介绍的是中间件diamond. 二.diamond学习笔记 1.diamond简介 diamon ...

  5. MSIL Emit AOP

    参考链接: https://pieterderycke.wordpress.com/tag/reflection-emit/ http://www.moon-soft.com/doc/23252.ht ...

  6. shared memory realm does not exist

    有天启动ORACLE,碰到如下问题 提示ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 解决 ...

  7. js 什么是变量的提升?

  8. vim安装不上

    前阵子,刚安装Ubuntu时,安装vim的问题,现在些出来分享一下.apt-get install vim正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成有一些软件 ...

  9. Sharif University CTF 2016 -- Android App

    很多种的方案: 方案 A: 直接逆向读代码方案 B: 解包,加入debug信息,重新打包,动态调试方案 C: 解包,改代码加入log.i整出flag, 去掉MainActivity里面d=什么也可以, ...

  10. Wordpress上传到阿里云服务器

    Wordpress上传到阿里云服务器 登录服务器 https://account.aliyun.com/login/login.htm 绑定域名 获取FTP信息.数据库信息 在本地修改wordpres ...