`

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

 
阅读更多
------- android培训 java培训、期待与您交流!-------


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;
	}

}

分享到:
评论

相关推荐

    commons-collections-3.2.2-API文档-中英对照版.zip

    赠送jar包:commons-collections-3.2.2.jar; 赠送原API文档:commons-collections-3.2.2-javadoc.jar; 赠送源代码:commons-collections-3.2.2-sources.jar; 赠送Maven依赖信息文件:commons-collections-3.2.2....

    commons-collections-3.2.2-API文档-中文版.zip

    赠送jar包:commons-collections-3.2.2.jar; 赠送原API文档:commons-collections-3.2.2-javadoc.jar; 赠送源代码:commons-collections-3.2.2-sources.jar; 赠送Maven依赖信息文件:commons-collections-3.2.2....

    commons-beanutils、commons-collections、commons-collections等常用jar 包下载

    2. **Apache Commons Collections** - `commons-collections-3.2.2.jar` 这个库扩展了Java集合框架,提供了许多额外的数据结构和算法。它包含: - 高级集合实现:如双向队列、堆栈、映射、多重集(Multiset)等。 ...

    黑马程序员-Java语言进阶-源码、教程笔记.zip

    day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 day08_File类、递归 day09_字节流、字符流 day10_缓冲流、转换流、...

    poi4.1.2以及所有依赖,源码,文档.zip

    org.apache.poi:poi:4.1.2 org.apache.poi:poi-ooxml:4.1.2 org.apache.poi:poi-...org.apache.commons:commons-collections4:4.4 org.apache.commons:commons-math3:3.6.1 org.apache.commons:commons-compress:1.19

    commons-collections4-4.1-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-collections4:4.1; 标签:apache、commons、collections4、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

    commons-collections4-4.4-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-collections4:4.4; 标签:apache、collections4、commons、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

    commons-collections4-4.4-API文档-中英对照版.zip

    Maven坐标:org.apache.commons:commons-collections4:4.4; 标签:apache、collections4、commons、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...

    commons-collections-3.2.jar

    3. **集合**:提供了一些增强型集合,如Bag(多态集合,允许元素重复)、ListUtils(集合操作工具类,如列表合并、排序等)和SetUtils(集合操作工具类,如创建不可变集等)。 4. **工厂**:提供了一些静态工厂方法...

    commons-collections4-4.1.jar

    4. **ListUtils、MapUtils和SetUtils**:这些工具类提供了许多静态方法,如合并列表、分割列表、排序列表、创建不可变集合等,极大地简化了集合操作。 5. **Predicate接口**:Predicate接口定义了一个接收一个对象...

    apache-collections-commons-collections-3.1.jar.zip

    标签:apache-collections-commons-collections-3.1.jar.zip,apache,collections,commons,collections,3.1,jar.zip包下载,依赖包

    commons-collections4-4.4-bin.zip

    这个"commons-collections4-4.4-bin.zip"文件包含了Apache Commons Collections的4.4版本,它是该库的一个稳定版本,提供了一系列增强和额外的工具类,以帮助开发者更高效地处理Java集合。 1. **接口增强**: ...

    iOS-Example-Collections:示例集合

    在iOS-Example-Collections-master这个文件夹中,你可能会找到以下文件结构: - 示例代码文件夹:包含各个示例的Objective-C类文件,如ViewController、CollectionViewCell和自定义布局类。 - 资源文件夹:包含图片...

    commons-collections4-4.1-API文档-中英对照版.zip

    Maven坐标:org.apache.commons:commons-collections4:4.1; 标签:apache、commons、collections4、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...

    黑马程序员Javase笔记

    Java是世界上最流行的编程语言之一,尤其在...总结来说,"黑马程序员Javase笔记"涵盖了Java的基础语法、内存管理、面向对象编程、集合框架以及泛型和Map等内容,这些都是成为一名合格Java开发者必须掌握的核心知识。

    feathers-mongo-collections:管理 MongoDB 集合的 FeathersJS 服务

    feathers-mongo-collections 服务 创建服务来管理数据库中的集合。 除了 get/findOne 之外, feathers-mongo-collections就像标准服务一样工作。 它在执行create 、 update和remove时使用集合名称作为id值。安装npm ...

    ynn-util-collections:java.util 集合 API 的增强

    这种特性使得程序员能够使用熟悉的 SQL 语句来筛选、聚合、排序和更新集合中的元素,极大地提高了代码的可读性和简洁性。 3. **扩展的集合接口和类**:除了标准的 `List`, `Set`, `Map` 等接口,`ynn-util-...

    collections-generic-4.01_and_looks-2.1.4

    该文件里包含两个.jar包: collections-generic-4.01.jar和looks-2.1.4.jar, 引入collections-generic-4.01.jar: 右击工程--》Build path ——》Add External JAR--&gt;选中collections-generic-4.01.jar --》OK 在源...

    commons-collections4-4.2-bin

    Apache Commons Collections是一个强大的Java集合框架扩展库,它为Java的内置集合类提供了丰富的功能增强。这个"commons-collections4-4.2-bin"是Apache Commons Collections的第4版的第2次更新,是一个二进制分发包...

Global site tag (gtag.js) - Google Analytics