黑马程序员19-4:Collections工具的使用,集合排序的核心源码

[align=center]------- [url=http://edu.csdn.net/heima]android培训 [/url]、[url=http://edu.csdn.net/heima]java培训[/url]、期待与您交流!------- [/align]


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

import java.io.File;
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;
//!!!!如果是数值的HashMap,则会根据数值排序,如果不是,就是乱序
//!!!!如果需要存进去和取出来是一致的,就使用Hash
//@@@@!!!TreeSet是有序的,但是是根据自定方式排序的,存取去和取出来是一致的
public class CollectionsDemo {

/**
* @param args
*/
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("zhangsan");
list.add("zhaoliu");
list.add("xiaoqiang");

System.out.println(list);
// Collections.replaceAll(list, "cba", "nba"); // set(indexOf("cba"),"nba");
//随机存储元素的位置,一般用于随机排序,如:扑克
Collections.shuffle(list);
//替换所有的元素,一般用于初始化元素
// Collections.fill(list, "cc");
System.out.println(list);
}

public static void demo_3() {
/*
TreeSet<String> ts = new TreeSet<String>(new Comparator<String>(){
@Override
public int compare(String o1, String o2) {

int temp = o2.compareTo(o1);
return temp;
}

});
*/
//TreeSet,倒序输出,按照自定义长度排序,比较构造器
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new ComparatorByLength()));

ts.add("abc");
ts.add("hahaha");
ts.add("zzz");
ts.add("aa");
ts.add("cba");

System.out.println(ts);

}

public static void demo_2(){
List<String> list = new ArrayList<String>();

list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zzz");
list.add("cba");
list.add("nbaa");
//对集合进行默认排序
// Collections.sort(list);
System.out.println(list);
//二分法查找集合中某个元素的位置
// int index = Collections.binarySearch(list, "cba");
// System.out.println("index="+index);

//获取最大值。
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("zzz");
list.add("cba");
list.add("nbaa");
System.out.println(list);


//对list集合进行指定顺序的排序。
// Collections.sort(list);
// mySort(list);
// mySort(list,new ComparatorByLength());
Collections.sort(list,new ComparatorByLength());
System.out.println(list);
}
//自己写排序的方法,难,回忆视频
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){

// T temp = list.get(i);
// list.set(i, list.get(j));
// list.set(j, temp);
Collections.swap(list, i, j);

}
}
}
}
//自己写排序的方法,难,回忆视频
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){

// T temp = list.get(i);
// list.set(i, list.get(j));
// list.set(j, temp);
Collections.swap(list, i, j);

}
}
}
}

}



package cn.itcast.p2.comparator;

import java.util.Comparator;

public class ComparatorByLength implements Comparator<String> {

@Override
public int compare(String o1, String o2) {

int temp = o1.length() - o2.length();

return temp==0?o1.compareTo(o2): temp;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值