Java集合框架->Collections类

Collections类常用方法

一、此类完全由在 collection 上进行操作或返回 collection 的静态方法组成

二、static <T> void sort(List<T> list, Comparator<? super T> c)

实例:

import java.util.*;

	/*
		Collections.sort()排序实例
		二分法查找
	*/
	
	class CollectionsTest1 {
		public static void main(String[] args) {
			binarySearchTest();
		}
	
		//二分法常找
		public static void binarySearchTest() {
			ArrayList<String> list = new ArrayList<String>();
			
			list.add("Java");
			list.add("c++");
			list.add("aaa");
			list.add("c");
			list.add("ef");
			list.add("aa");
	
			Collections.sort(list, new StrLenComparator());
	
			out(list);
	
	//		int index = Collections.binarySearch(list, "b");
	//		out(index);
	
			int index = selfBinarySearch(list, "bbb", new StrLenComparator());
			out(index);
		}
		
		//自定义二分法
		public static int selfBinarySearch(ArrayList<String> arr, String key, Comparator<String> comp) {
			int max = arr.size() - 1;
			int min = 0;
			int mid = (max + min) >> 1;
	
			while(min <= max) {
		
				String str = arr.get(mid);
	
				int num = comp.compare(str, key);
	
				if (num > 0) {
					max = mid - 1;
				} else if (num < 0) {
					min = mid + 1;
				} else {
					return mid;
				}
	
				mid = (max + min) >> 1;
			}
			return -mid - 1;
		}
	
		//字符串最大值
		public static void strTest() {
			ArrayList<String> list = new ArrayList<String>();
			
			list.add("Java");
			list.add("c++");
			list.add("aaa");
			list.add("c");
			list.add("ef");
			list.add("aa");
	
			out(list);
			
			out("max=" + Collections.max(list));
		}
	
		//字符串长度排序
		public static void strLenTest() {
			ArrayList<String> list = new ArrayList<String>();
			
			list.add("Java");
			list.add("c++");
			list.add("aaa");
			list.add("c");
			list.add("ef");
			list.add("aa");
	
			out(list);
	
			Collections.sort(list, new StrLenComparator());
	
			out(list);
		} 
	
		//输出
		public static void out(Object obj) {
			System.out.println(obj);
		}
	}
	
	//字符串长度排序比较器
	class StrLenComparator implements Comparator<String> {
		public int compare(String s1, String s2) {
			int num = s1.length() - s2.length();
	
			if (num == 0) {
				return s1.compareTo(s2);
			}
			return num;
		}
	}

三、full方法:将集合中的所有元素替换成制定元素

import java.util.*;
	
	/*
		fill方法测试
	
		练习:将集合中一部分元素替换成制定元素
	*/
	
	//mina 
	class FillTest {
		public static void main(String[] args) {
			ArrayList<String> list = new ArrayList<String>();
			
			list.add("Java");
			list.add("c++");
			list.add("aaa");
			list.add("c");
			list.add("ef");
			list.add("aa");
	
			out(list);
	
			selfFill(list, "ccc", 1, 4);
	
			out(list);
		}
	
		//将集合中一部分元素替换成制定元素
		public static void selfFill(ArrayList<String> list, String key, int start, int end) {
			for (int i=start;i<end;i++) {
				list.set(i, key);
			}
		}
	
		//full方法测试
		public static void fillTest() {
			ArrayList<String> list = new ArrayList<String>();
			
			list.add("Java");
			list.add("c++");
			list.add("aaa");
			list.add("c");
			list.add("ef");
			list.add("aa");
	
			out(list);
	
			Collections.fill(list, "Java");
	
			out(list);
		}
	
		//输出
		public static void out(Object obj) {
			System.out.println(obj);
		}
	}

四、TreeSet元素反序

import java.util.*;

	/*
		static <T> Comparator<T> reverseOrder() 
	          返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。 
		static <T> Comparator<T> reverseOrder(Comparator<T> cmp) 
	          返回一个比较器,它强行逆转指定比较器的顺序。 
	
		测试:
	*/
	
	//mian 
	class ReverseTest
	{
		public static void main(String[] args) {
			reverseElement();
		}
	
		//元素反转
		public static void reverseElement() {
	
			//将StrLenComparator()比较器构造器反转
			TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrLenComparator()));
	
			ts.add("Java");
			ts.add("c++");
			ts.add("aaaff");
			ts.add("c");
			ts.add("ef");
			ts.add("aa");
	
			out(ts);
	
	
		}
	
		//输出
		public static void out(Object obj) {
			System.out.println(obj);
		}
	}
	
	//字符串长度排序比较器
	class StrLenComparator implements Comparator<String> {
		public int compare(String s1, String s2) {
			int num = s1.length() - s2.length();
	
			if (num == 0) {
				return s1.compareTo(s2);
			}
			return num;
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值