类Collections的静态方法的使用(代码)
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的静态方法的使用(代码)的更多相关文章
- 类Collections的静态方法
类Collections的静态方法 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成. 排序 static <T extends Comparable& ...
- Java基础 @org.junit.Test-单元测试方法 + 操纵Collection和Map的工具类 : Collections 的sort/binarySearch/max/min等静态方法
单元测试代码: ( 在IDEA中先输入'@Test '然后根据提示进行自动修订即可!!运行时直接运行即可! 若有多个单元测试块的时候,直接把鼠标放在哪里就自动在哪里运行那个单元块) import ...
- java中的静态变量、静态方法与静态代码块详解与初始化顺序
我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- JVM 字节码(四)静态方法、构造代码、this 以及 synchronized 关键字
JVM 字节码(四)静态方法.构造代码.this 以及 synchronized 关键字 一.静态代码 public class ByteCodeStatic { private static fin ...
- java 多线程3:Thread类中的静态方法
Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...
- Java中的静态变量、静态方法、静态代码块
转载自http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)静态方法(1)在Java里,可以定义一个不需要创建对 ...
- 第7.17节 Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析
第7.17节 Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析 静态方法也是通过类定义的一种方法,一般将不需要访问类属性但是类需要具有的一些能力可以静态方法提供. 一 ...
- java中的静态变量,静态方法与静态代码块详解
java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- WebMethod在webservice里面非静态方法能调用,在页面类里面,静态方法才能调用
WebMethod在webservice里面非静态方法能调用,在页面类里面,静态方法才能调用
随机推荐
- React Test相关资料
karma 前端测试驱动器,生产测试报告,多个浏览器 mocha js的测试框架,相当于junit chai,单元测试的断言库,提供expect shudl assert enzyme sinon.j ...
- 数据转换成json传递
//将奖励转换成json格式 _page.StrRewardToJson = function () { var hdReward = $("#hdReward").find(&q ...
- Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
Lifecycle 三种属性: Session.Invocation.Server 这三种属性都用在什么情况,有什么要注意的事项,Delphi2010中罕有说明. 如果乱用这三种属性,你的服务程序有可 ...
- 15.6.2 Configuring the Merge Threshold for index pages[innodb]
MERGE THRESHOLD 提供了可以合并相邻索引page的功能. 默认值是50 如果一个页中数据被删除或者更新减小,导致页中有空白部分,空白部分接近合并门槛的值,则会和相邻页合并, 但是两个pa ...
- 修改C# 新建类模板
找到安装路径下的这个文件夹:D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSh ...
- 犀利点评:csdn某文<第一次创业还是失败了---分享失败的经验>
今天上午在csdn看了一篇创业文,突然想无节操的做一下点评. 原文详细地址如下:http://blog.csdn.net/android_tutor/article/details/9815801 以 ...
- 循序渐进Python3(十)-- 0 -- RabbitMQ
RabbitMQ RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息 ...
- centos如何卸载软件
需要看你的软件包格式: 如果你带有yum,可以直接yum remove xxx如果是rpm包,rpm -e xxxtar包的话需要你直接删除该文件或者make uninstall xxx常见的就这三种
- [转载] Android Bander设计与实现 - 设计篇
本文转载自: http://blog.csdn.net/chenxiancool/article/details/17454593 摘要 Binder是Android系统进程间通信(IPC)方式之一. ...
- ios面试技巧
一.软件开发流程? 软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法.软件的总体结构设计和模块设计.编程和调试.程序联调和测试以及编写.提交程序. 1 相关系统分析员和用户初步了解需 ...