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. UNDO

    UNDO及事物 undo表空间是Oracle独有,在oracle开启一个事物之后,oracle对数据进行修改,同时,会把修改前的数据保存到UNDO表空间的UNDO段里.undo表空间中会自动分配und ...

  2. HTTPS 和 HTTP

    https://www.zhihu.com/question/52790301

  3. UVa 694 - The Collatz Sequence

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...

  4. 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】

    [英语魔法俱乐部——读书笔记] 3 高级句型-简化从句&倒装句(Reduced Clauses.Inverted Sentences):(3.1)从属从句简化的通则.(3.2)形容词从句简化. ...

  5. [软件工程] 查找二维数组最大子数组的之和 郭莉莉&李亚文

    一. 在主函数中实现二维数组的输入. 代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组, 在循环中算出之和,编写 ...

  6. 数字信号处理--FFT

    FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域.有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了.这就是很多信号分析采用FFT变换的原因.另外,FFT可以将 ...

  7. redis geo 初探

    redis的geo搜索功能是3.2之后新增的,所以实验开始之前先查看redis的版本,确保版本正确. redis的geo多用于地理类应用,所以这次还是用了高德地图API来用作数据源. 首先截取几个点: ...

  8. Node debug

    node-inspector & node --debug-brk   test.js 在 chrome 中调试 'use strict'; var P2PSpider = require(' ...

  9. sizeof(结构体) = ?

    关于结构体大小怎样计算的文章,我想网上一搜到处都有人总结,本人之所以在此基础上还要发表这样的文章是想用最简单的计算方法来总结前人给出的结论,以致我们在以后在对结构体相关编程中不会陷入字节对齐的陷阱中. ...

  10. linux命令(1):ls命令

    ls命令是linux下最常用的命令. ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看lin ...