欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Collections工具类和Arrays工具类

程序员文章站 2022-07-14 23:37:52
...

一. Collections工具类

Collections工具类:是集合框架中的用于操作集合对象(任意集合均可)的工具类。都是静态的工具方法。

  • max():
public static void main(String[] args) {
		//获取最大值
		Collection<String> c=new ArrayList<String>();
		c.add("hash");
		c.add("wewfw");
		c.add("zz");
		c.add("asdd");
		String s=Collections.max(c);
		System.out.println(s);	
	}

创建集合的时候可以传比较器,按比较器的比较方式比较:

public static void main(String[] args) {
		//获取最大值
		Collection<String> c=new ArrayList<String>();
		c.add("hash");
		c.add("wewfw");
		c.add("zz");
		c.add("asdd");
		String s=Collections.max(c,new Comparator<String>() //传入比较器
		{
		     public int compare(String s1, String s2) 
		     {
		          int temp=s1.length()-s2.length();
		          return temp==0? s1.compareTo(s2):temp;
		    }
		});
		System.out.println(s);
	}
  • revereOrder(比较器):返回一个比较器,强行逆转指定比较器的顺序
    比如自定义一个比较器是从长到短来排序的,我如果有从短到长的需求,我不需要在写一个从短到长的比较器,我可以使用该方法,将比较器作为参数传入。
//比较器,从短到长
import java.util.Comparator;
public class CompareByLength implements Comparator<String> {
	public int compare(String s1, String s2) {
		int temp=s1.length()-s2.length();
		return temp==0? s1.compareTo(s2):temp;
	}
}

import java.util.*;
public class Demo {
	public static void main(String[] args) {
		List<String> c=new ArrayList<String>();
		c.add("hash");
		c.add("wewfw");
		c.add("zz");
		c.add("asdd");
		Collections.sort(c,Collections.reverseOrder(new CompareByLength()));//从长到短
		System.out.println(c);
	}
}

结果:[wewfw, hash, asdd, zz]
  • sort():排序
    无重复元素的集合+排序——>TreeSet.
    有重复元素+排序————>Collections.sort(List).(还可以有第二个参数比较器,如果不传则自然排序。)

  • XXX synchronizedXXX(XXX):返回指定集合支持的同步集合
    并发访问的容器一定要加这个。

二.Arrays工具类

Arrays工具类:用于操作数组的工具类。类中定义的都是静态方法

  • 对数组排序。
  • 二分查找。
  • 数组复制
  • 对两个数组进行元素的比较,判断两个数组是否相同。
  • fill()填充。
  • 将数组转成字符串。
  • asList():将数组转成固定长度的集合。
    数组转集合的目的:集合中有很多方法便于使用。
    但是不要使用增删等改变长度的方法,如使用add,remove会报错。
import java.util.*;
public class Demo1 {
	public static void main(String[] args) {
		//asList数组转成集合
		String[] str= {"hjg","hyhy","yit"};
		List<String> list=Arrays.asList(str);
		//list.add("H");报错
		System.out.println(list.contains("yit"));
	}
}

如果数组中存储的是基本数据类型,转集合的话,数组对象会作为集合中的元素存在;
如果数组中存储的是引用数据类型(即类,接口,数组)时,转集合的话,数组元素会作为集合元素存在。

public static void main(String[] args) {
		  int[] a= {2,32,435};
		  List list=Arrays.asList(a);
		  System.out.println(a);//输出:[[email protected]
	}
public static void main(String[] args) {
		  Integer[] a= {2,32,435};
		  List<Integer> list=Arrays.asList(a);
		  System.out.println(list);//输出:[2, 32, 435]
	}

既然有数组转集合,那么就不得不谈谈集合转数组。Collection类里的toArray():集合转数组。目的: 为了限制对元素的增删操作。
如果传递的数组的长度小于集合长度,会创建一个同类型的数组长度,该长度为集合的长度
如果传递的数组的长度大于集合长度,就会使用这个数组,没有存储元素的位置为null
所以数组的长度最近定义和集合长度一致。可以用size得到集合的长度。

public static void main(String[] args) {
		Collection<String> c=new ArrayList<String>();
		c.add("A");
		c.add("wef");
		c.add("regiom");
		String[] str1=c.toArray(new String[1]);
		System.out.println(Arrays.toString(str1));//输出:[A, wef, regiom]
		
		String[] str2=c.toArray(new String[5]);
		System.out.println(Arrays.toString(str2));//输出:[A, wef, regiom,null,null]
       
        String[] str1=c.toArray(new String[c.size()]);
		System.out.println(Arrays.toString(str1));//输出:[A, wef, regiom]
	}
相关标签: java