java Collections集合工具类

/*
Collections是Collection的工具类。
工具类中其中两个比较常用的方法就是:
1,sort(list)  、  sort(list,自定义比较器)
2,max(list)   、  max(list,自定义比较器)
3,binarySearch(list,key) //利用折半查找的方法找到list中key元素的索引,存在则返回索引,不存在则返回-(插入点)-1

*/

import java.util.*;

class CollectionsDemo
{
	public static void main(String[] args)
	{
		sortDemo();
	}

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

		list.add("shdgjh");
		list.add("Alklkjjj");
		list.add("and");
		list.add("hello");
		list.add("World");
		list.add("Hello");
		list.add("hello");

		//sop("原始list:"+list);
		//排序:
		Collections.sort(list);//根据元素的自然顺序 对指定列表按升序进行排序。
		sop("按照自然顺序排序后的list:"+list);
		//Collections.sort(list,new MyComparator());// 根据指定比较器产生的顺序对指定列表进行排序。
		//sop("按照字符串长度排序后的list:"+list);

		//获取最大值
		//String max=Collections.max(list);//根据元素的自然顺序,返回给定 collection 的最大元素。
		//sop("返回自然顺序最大的对象:"+max);
		//String max1=Collections.max(list,new MyComparator());
		//sop("返回字符串长度最大的对象:"+max1);

		int num=Collections.binarySearch(list,"and");//使用二分查找找到某一元素的索引值并返回
		sop("and的索引-调用binarySearch方法:"+num);

		int y=halfSearch(list,"and");
		sop("and的索引-调用自定义的halfSearch方法:"+y);

	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}

	public static int halfSearch(List<String> list,String key)
	{
		int min=0,max=list.size()-1;
		while(min<=max)
		{
			int mid=(min+max)>>1;//左乘右除
			String str=list.get(mid);
			int x=str.compareTo(key);
			if(x>0)
				max=mid-1;
			else if(x<0)
				min=mid+1;
			else
				return mid;
		}
		return -min-1;
	}

}

class MyComparator implements Comparator<String>  //指定比较器,按照字符串长度进行排序
{
	public int compare(String s1,String s2)
	{
		if(s1.length()>s2.length())
			return 1;
		if(s1.length()<s2.length())
			return -1;
		return s1.compareTo(s2);
	}
}
/*
Collection集合的工具类:
Collections中的常用方法(续)
1,	fill(list,"Hello");//用Hello来替换list中的所有对象。
2,	replaceAll(list,old,new);//用new对象替换list中所有的old对象。
3,	reverse(list);//list元素反转

*/

import java.util.*;
class CollectionsDemo1
{
	public static void main(String[] args)
	{
		fillDemo();
 	}

	public static void fillDemo()
	{
		List<String> list=new ArrayList<String>();
		list.add("Hello1");
		list.add("Hello2");
		list.add("Hello3");
		list.add("Hello4");
		list.add("Hello5");
		list.add("Hello6");
		list.add("Hello3");

		sop(list);

		Collections.shuffle(list);
		sop(list);

		Collections.swap(list,1,3);
		sop(list);
		//Collections.fill(list,"Hello World");//替换list中的全部对象
		//list=fillDemo_1(1,4,list,"me");//替换指定索引起始和终点位置的对象。
		Collections.replaceAll(list,"Hello3","me...");//替换list中所有的Hello3对象
		sop(list);

		Collections.reverse(list);//反转
		sop(list);
	}

	public static List<String> fillDemo_1(int first,int last,List<String> list,String key)
	{
		for(int i=first;i<last;i++)
		{
			list.set(i,key);
		}
		return list;
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}
/*
工具类Collections中有一个反转方法,返回的是一个比较器。
reverseOrder()  返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。
在本例中,TreeSet集合会对元素进行自然顺序的排序,
如果在构造函数中调用工具类中的该方法,则会强行逆转自然顺序。

Collections.reverseOreder();//对自然顺序进行反转。
Collections.reverseOreder(new MyComparator());//对自定义的比较器比较后的顺序进行反转。
*/
import java.util.*;

//代码实现工具集的reverseOrder()反转方法的原理:实际开发中不用写这部分代码。因为已经封装好了
class StrComparator implements Comparator<String>
{
	public int compare(String s1,String s2)
	{
		return s2.compareTo(s1);//自然顺序的逆序。
		//return s1.compareTo(s2);//自然顺序的正序。
		/*
		逆序解释:
		int num=s1.compareTo(s2);
		if(num>0)
			return -1;
		if(num<0)
			return 1;
		return num;
		*/
	}
}

class MyComparator implements Comparator<String>  //指定比较器,按照字符串长度进行排序,从短到长
{
	public int compare(String s1,String s2)
	{
		if(s1.length()>s2.length())
			return 1;
		if(s1.length()<s2.length())
			return -1;
		return s1.compareTo(s2);
	}
}

class CollectionsDemo2
{
	public static void main(String[] args)
	{

		//TreeSet<String> ts=new TreeSet<String>(Collections.reverseOrder());//使用工具类中的反转方法(自然顺序)
		//TreeSet<String> ts=new TreeSet<String>(new StrComparator());//自然顺序反转原理实现
		TreeSet<String> ts=new TreeSet<String>(Collections.reverseOrder(new MyComparator()));//对自定义的比较器比较后的顺序进行反转,这个真的好牛啊!
		ts.add("hello");
		ts.add("kl");
		ts.add("heyjk");
		ts.add("ash");
		ts.add("u");
		ts.add("bght");

		sop(ts);
		Iterator<String> it=ts.iterator();
		while(it.hasNext())
		{
			sop(it.next());
		}

	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}

}

时间: 2025-01-02 04:48:07

java Collections集合工具类的相关文章

java map接口,可变参数,Collections集合工具类

map接口的实现类存储成对的值,键--值.通过键来找到对应的值. Collection中的集合称为单列集合,Map中的集合称为双列集合 Map中常用的集合为HashMap集合.LinkedHashMap集合. HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致.由于要保证键的唯一.不重复,需要重写键的hashCode()方法.equals()方法. LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈

Map集合以及Collections集合工具类

一.Collection集合主要特点与Map集合的区别 Collection: 单列集合:有两个子接口 List集合元素是有序的,可以重复的 Set集合元素是无序的,不可以重复 List:元素可重复,有序 ArrayList:底层数据结构是数组,查询快,增删慢,不同步,线程不安全,效率高:没有特殊说明一般使用ArrayList集合: Vector:底层数据结构是数组,查询快,增删慢,同步,线程安全,效率低:有一个elements()特有迭代方法: LinkedList:底层数据结构是链表,查询慢

Collections集合工具类

Collections集合工具类,专门用来对集合进行操作的. 常用方法: public static<T> boolean addAll(Collection<T> c,T....elements):往集合中添加一些元素 public static void shuffle(List<?> list):打乱list集合顺序 public static <T> void sort(List<?> list):将集合中的元素,按照默认规则排序,自定义

Java基础知识回顾-22(静态导入,可变参数,Collections集合工具类,集合嵌套)

1.在导包的时候可以导入其静态部分,这样在类中使用其时,可以直接以其名使用 例如:Map.Entry的访问,在类文件头部导入import java.util.Map.Entry后简化后为Entry. 2.可以用"修饰符 返回值类型 方法名(参数类型... 形参名){  }"的方式来同时传入不确定个数,相同参数类型的参数.比如当求不确定个数的int类型的数据的和时,可以使用这种方式,避免写多个方法,如果参数类型不改变,则该方法不可重载,因为可变参数不确定参数个数吗.若要增加不可变参数,需

JAVA学习--Collections集合工具类使用

* 操作Collection以及Map的工具类:Collections -------------------------------------------------------------------------------------------------------------- *  reverse(List):反转 List 中元素的顺序         shuffle(List):对 List 集合元素进行随机排序         sort(List):根据元素的自然顺序对指定

Collections:集合工具类

public static <T> boolean addAll(Collection<? super T> c, T... elements) 将指定元素们加入到指定集合 public static void reverse(List<?> list) 反转指定列表中元素的顺序 public static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换.所有置换发生的可能性都是大致相等的.即 随机打乱顺序 //数组&

java集合工具类---Collections/Arrays

/* *Collections用于操作List/Set的工具类 *Arrays用于操作数组的工具类 */ package pack; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.TreeSet; public class Main { pu

黑马程序员——Java集合工具类和泛型

Collections工具类和泛型 Collections和Collection Collections和Collection是不同的,Collections是工具类,用来操作集合的,而Collection是集合接口.Collections中有一系列的静态方法用来操作集合,但是不能更改集合内容.比如不能set()不能remove()元素,可以替换全部元素或者添加同一个元素. static List<String> list =Arrays .asList("one Two three

集合工具类 - CollectionUtil.java

集合工具类,提供数组转LIST.数组转SET.合并集合.计算笛卡儿积等方法. 源码如下:(点击下载 -  CollectionUtil.java.ArrayUtil.java.commons-lang-2.6.jar.commons-collections4-4.0.jar) 1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.Collection; 4 import java.util.Link