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. [转] --- Error: “A field or property with the name was not found on the selected data source” get only on server

    Error: “A field or property with the name was not found on the selected data source” get only on ser ...

  2. asp.net前台代码中引入namespace的方法

    <%@ import NameSpace="System.Data.OleDb" %>

  3. PRML

    PRML 学习之 第一章 介绍 Introduction #欢迎共同学习和讨论,由于本文将不断修改,谢绝转载 模式识别问题具有重要且久远的历史.比如,16世纪开普勒发现行星运动定律,又如20世纪出发现 ...

  4. zTree入门-最简单的树

    最近发现项目中很多地方都是树形菜单,而这些树形菜单都是使用树形插件zTree来制作的,所以就想自学一下zTree,参照官方文档写了一个简单的案例,使用zTree做了 一个最简单的树形结构. 案例:zT ...

  5. spring整合freemarker

    一.配置maven <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  6. File控件选择图片的时候在Html5下马上预览

    页面HTML <div> <img src="@pic.Path" id="img" style="width:200px;heig ...

  7. 表有主外键约束时的delete 方法 2008

    --1.禁用约束 ALTER TABLE abppmgr.MST_ITEMMASTER disable CONSTRAINT C0248833319_7676; --2.删除数据 truncate t ...

  8. Autofac 及 Autofac.WebApi 与MVC版本兼容问题

    环境:vs2013 下载 Autofac 时,会自动把 Microsoft.AspNet.Mvc 更新到 5.2.3.原来是 5.0.0.0 再使用 Autofac.WebApi , 出现以下问题: ...

  9. bash:fdisk:command not found

    bash:fdisk:command not found [lansir@Red-Hat ~]$ fdisk -l-bash: fdisk: command not found 原因是fdisk不在P ...

  10. NPOI MVC 模型导出Excel通用类

    通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...