黑马程序员—Java工具类(Collections、Arrays)

本文介绍了Java和Android开发技能培训的相关内容,包括Collections类的操作方法、集合与数组的转换、以及如何利用Arrays类进行数组操作。文章通过代码示例详细解释了如何对集合进行排序、查询、修改等操作,同时展示了如何将数组转换为List集合,以及如何在集合中进行增删操作。此外,文章还介绍了集合与数组之间的相互转换方法,并讨论了数组变集合的好处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- android培训java培训、期待与您交流! ----------

 

Collections是一个操作SetListMap等集合的工具类

Collections 中提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法
排序操作:
reverse(List) :反转 List 中元素的顺序
shuffle(List) :对 List 集合元素进行随机排序
sort(List) :根据元素的自然顺序对指定 List 集合元素按升序排序
sort(List Comparator) :根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
swap(List int int ) :将指定 list 集合中的 i 处元素和 j 处元素进行交换
Object max(Collection) :根据元素的自然顺序, 返回 给定集合中的最大元素
 
Object max(Collection Comparator) :根据 Comparator 指定的顺序,返回给定集合中的最大元素
Object min(Collection)
Object min(Collection Comparator)
int frequency(Collection Object) :返回指定集合中指定元素的出现次数
boolean replaceAll (List list Object oldVal Object newVal ) :使用新值替换 List 对象的所有旧值

Collections作为一个工具类,它里面的方法都是静态的。它没有对外提供构造函数,因为他不需要创建对象,他并未封装特有数据。

代码示例:

//定义排序功能
	public static void sortDemo()
	{
		//创建List集合,并添加一些字符串元素
		List<String> li = new ArrayList();
		li.add("nbc");
		li.add("jhkf");
		li.add("ippkbhbsiw");
		li.add("vhbdbw");
		li.add("fce");
		
		//按添加元素顺序打印元素
		sop(li);
		//对元素进行自然排序,再打印元素
		Collections.sort(li);
		sop(li);
		//对元素进行自定义的比较器方法进行排序,再打印元素
		Collections.sort(li, new StringLenComp());
		sop(li);
		
		int i = halfSearch(li, "ippkbhbsiw", new StringLenComp());
		sop(i);
	}
	
	 //定义获取最大值的功能
	public static void maxDemo()
	{
		//创建List集合,并添加一些字符串元素
		List<String> li = new ArrayList();
		li.add("nbc");
		li.add("jhkf");
		li.add("ippkbhbsiw");
		li.add("vhbdbw");
		li.add("fce");
		//对元素进行自然排序,再打印元素
		Collections.sort(li);
		sop(li);
		//根据指定的比较器比较方法获取最大值,并打印
		String max = Collections.max(li, new StringLenComp());
		sop(max);
		
		//调用带比较器参数的折半查找方法
		Collections.sort(li, new StringLenComp());
		sop(li);
	}
	
	//定义获取指定元素角标的功能
	public static void binarySearchDemo()
	{
		//创建List集合,并添加一些字符串元素
		List<String> li = new ArrayList();
		li.add("nbc");
		li.add("jhkf");
		li.add("ippkbhbsiw");
		li.add("vhbdbw");
		li.add("fce");
		
		//对元素进行自然排序,并打印元素
		Collections.sort(li);
		sop(li);
		//对指定元素进行搜索,获取角标,并打印角标
		int index = Collections.binarySearch(li, "ippkbhbsiw");
		sop("index="+index);
		
		//调用halfSearch折半查找功能。
		int index2 = halfSearch(li, "g");
		sop(index2);
	}
public static void fillDemo()
	{
		//创建List集合,并添加一些字符串元素
		List<String> li = new ArrayList();
		li.add("nbc");
		li.add("jhkf");
		li.add("ippkbhbsiw");
		li.add("vhbdbw");
		li.add("fce");
		//打印原来集合
		sop(li);
		//把集合中的所有元素都替换成itheima,并打印。
		Collections.fill(li, "itheima");
		sop(li);
	}
	
	public static void replaceAllDemo()
	{
		//创建List集合,并添加一些字符串元素
		List<String> li = new ArrayList();
		li.add("nbc");
		li.add("jhkf");
		li.add("ippkbhbsiw");
		li.add("vhbdbw");
		li.add("fce");
		//打印原来集合
		sop(li);
		//把集合中的 fce 替换成 itheima,并打印
		Collections.replaceAll(li, "fce", "itheima");
		sop(li);
		
		//把集合中元素进行反转,并打印
		Collections.reverse(li);
		sop(li);
		
		//把List集合中的2角标和3角标互换位置。
		Collections.swap(li, 2, 3);
		sop(li);
		//使集合元素随机排序
		Collections.shuffle(li);
		sop(li);
	}


 

Collection Collections的区别:

Collections是个java.util下的类,是针对集合类的一个工具类,提供一系列静态方法,实现对集合的查找、排序、替换、线程安全化(将非同步的集合转换成同步的)等操作。

Collection是个java.util下的接口,它是各种集合结构的父接口,继承于它的接口主要有Set和List,提供了关于集合的一些操作,如插入、删除、判断一个元素是否其成员、遍历等。


 

 * Arrays:是操作数组的工具类。里面都是静态方法。
 *
 *  asList:将数组变成List集合。

代码示例:

import java.util.Arrays;
import java.util.List;

public class ArraysDemo
{
	public static void main(String[] args)
	{
		//定义一个数组
		int[] arr = {3,4,5,6,7,8,9};
		//返回指定数组内容的字符串表示形式。
		String s = Arrays.toString(arr);
		//打印转换后的字符串
		System.out.println(s);
		
		//把数组变成List集合的好处。
		//可以使用集合的思想和方法来操作数组中的元素。
		//将数组变成集合后,不可以使用集合的增删方法,因为数组的长度是固定的。。
		//如果强制增删会发生UnsupportedOperationException不支持的操作异常。
		String[] str = {"ff","vv","bb","dd"};
		//将字符串数组变成List集合
		List<String> li = Arrays.asList(str);
		//li.add("mm");//UnsupportedOperationException不支持的操作异常。
		//按照List集合的方法操作
		System.out.println(li.contains("vv"));
		//打印li集合
		System.out.println(li);
		
		/*	如果数组中的元素都是对象,那么变成集合时,数组中的元素就会直接转成集合中的元素。
		 * 	如果数组中的元素是基本数据类型,那么会将该数组作为集合中的元素存在。
		 * */
		Integer[] arr2 = {3,4,5,6,7,8,9};
		List<Integer> lt = Arrays.asList(arr2);
		sop(lt);
	}
	//打印功能
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}


 

集合变数组:用的是Collection接口中的方法:toArray();

如果给toArray传递的指定类型的数据长度小于了集合的size,那么toArray方法,会自定再创建一个该类型的数据,长度为集合的size。

    如果传递的指定的类型的数组的长度大于了集合的size,那么toArray方法,就不会创建新数组,直接使用该数组即可,并将集合中的元素存储到数组中,其他为存储元素的位置默认值null。

    所以,在传递指定类型数组时,最好的方式就是指定的长度和size相等的数组。

将集合变成数组后有什么好处?限定了对集合中的元素进行增删操作,只要获取这些元素即可。

 

------- android培训java培训、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值