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. C# MVC ( 将控制器的实体类注册到视图 )

    (1)控制器  代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...

  2. Scrum7.0

    Sprint回顾 让我们一次比一次做得更好. 1.回顾组织 主题:“我们怎样才能在下个sprint中做的更好?” 时间:1个小时 参与者:整个团队 场所:课室 秘书:陈程 2.回顾流程 (1)spri ...

  3. Java:多态(向上转型)

    先来看一段代码: class BaseClass{          public int book = 6;          public void base(){         System. ...

  4. php用simplexml来操作xml

    <?php$username = 'zhansan';if (!file_exists('001.xml')){ $fp = fopen('001.xml', 'w'); $xmlContent ...

  5. EMIF接口的寻址问题

    2014年8月26日,一个网友提出了一个关于EMIF访问地址很典型的问题,在此我阐述一下我的个人理解. 一.提出问题 他问的问题没有这么简单,但是差不多就是这种意思,我在晚上找个典型事例,如下: DS ...

  6. 画图解释SQL联合语句

    画图解释SQL联合语句 http://blog.jobbole.com/40443/ 我认为 Ligaya Turmelle 的关于SQL联合(join)语句的帖子对于新手开发者来说是份很好的材料.S ...

  7. re模块汇总

    text = 'The Attila the hun show' m = re.match('.',text)#任意单个字符 m.group() 'T' m = re.match('.*',text) ...

  8. Linux QT

    Check system version 1.  cat /proc/version mike@sp-ThinkPad-X220:~$ cat /proc/versionLinux version 3 ...

  9. java操作数据库

    增加 public String addParent(Parent pp) { Connection conn=new ConntionUtil().openConnection(); Prepare ...

  10. 第四章 ngrok使用

    网址(下载):http://www.ngrok.cc/ 注册:http://www.ngrok.cc/login 管理后台:http://www.ngrok.cc/user.html 创建隧道,产生隧 ...