Java基础-知识点总结-Java集合框架工具类

Java集合框架工具类

【集合框架工具类】

 

      【Collections】

 

             Collection和Collections有什么不同?

 

                    Collection:java.util.Collection 是一个集合接口。它提供了对集合对象进行基

 

                      本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。

 

                      Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。

 

                    Collections:java.util.Collections 是一个包装类。它包含有各种有关集合操作的

 

                      静态多态方法。此类不能实例化,就像一个工具类,服务于Java的

 

                      Collection框架。

 

      【Collections中的常用方法】

 

             Collections-sort

 

                    public static <T extendsComparable<? super T>> voidsort(List<T> list)

 

                      根据元素的自然顺序对指定列表按升序进行排序。

 

                    publicstatic <T> voidsort(List<T> list,Comparator<? super T> c)

 

            根据指定比较器产生的顺序对指定列表进行排序。

 

                    例:

 

 

import java.util.*;

class CollectionsTest {
	public static void main(String[] args) {
		// 创建一个List集合
		List<String> list = new ArrayList<String>();
		list.add("adfas");
		list.add("abc");
		list.add("qwer");
		sop(list);// 打印集合
		// Collections.sort(list);按照元素的自然顺序对集合进行排序
		// 根据指定比较器产生的顺序对列表进行排序
		Collections.sort(list, new StrLenComparator());
		sop(list);
	}

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

// 自定义比较器,按照元长度排序
class StrLenComparator implements Comparator<String> {
	public int compare(String s1, String s2) {
		return new Integer(s1.length()).compareTo(new Integer(s2.length()));
	}
}

 

 

 

 

                    Collections-max

 

                           public static <T extends Object & Comparable<T>> Tmax(Collection<?

 

                                         extendsT> coll)

 

                             根据元素的自然顺序,返回给定collection的最大元素。

 

                           publicstatic <T> Tmax(Collection<?extends T> coll,Comparator<?

 

                                         superT> comp)

 

                             根据指定比较器产生的顺序,返回给定 collection的最大元素。

 

                           例:

 

		sop("按照自然顺序:max = " + Collections.max(list));
		// 打印结果是:按自然顺序:max = z
		sop("按照长度顺序:max = " + Collections.max(list, new StrLenComparator()));
		// 打印结果为:按长度顺序:max = adfas

 

 

 

 

             Collections-binarySearch:要查找的列表必须是有序的

 

public static <T> intbinarySearch(List<?extends Comparable<? super T>>

 

             list,T key)

 

  使用二分搜索法搜索指定列表,以获得指定对象的索引。该列表必须

 

  是有序的

 

public static <T> intbinarySearch(List<?extends T> list,T key,Comparator

 

<? super T> c)

 

                           使用二分搜索法搜索指定列表,以获得指定对象。该列表必须按照指

 

                             定的比较器c进行排序,使用该方法才会得到正确的结果

 

                           例:

 

		Collections.sort(list,new StrLenComparator());
		//使用该方法,则必须保证列表是有序的
		sop(Collections.binarySearch(list,"abc")); 
		//使用该方法,则必须保证列表被指定的相同的比较器排过序
		sop(Collections.binarySearch(list,"abc",new StrLenComparator()));

 

 

 

 

                    Collections-copy

 

                           public static <T> voidcopy(List<?extends T> dest,List<? extends T> src)

 

                             将所有元素从一个列表复制到另一个列表。执行此操作后,目标列表

 

                             中每个已复制元素的索引将等同于源列表中该元素的索引。目标列表

 

                             的长度至少必须等于源列表。如果目标列表更长一些,也不会影响目

 

                             标列表中的其余元素。

 

                           例:

 

		List<String> list1 = new ArrayList<String>();
		list1.add("adfas");
		list1.add("abc");
		list1.add("qwer");// list=[adfas,abc,qwer]
		List<String> list2 = new ArrayList<String>();
		list2.add("hh");
		list2.add("z");// list1=[hh,z]
		Collections.copy(list1, list2);
		sop(list1);// 打印结果为:[hh,z,qwer]

 

 

 

 

                    Collections-fill

 

                           public static <T> voidfill(List<?super T> list,T obj)

 

                             使用指定元素替换指定列表中的所有元素。

 

                           例:

 

		List<String> list = new ArrayList<String>();
		list.add("adfas");
		list.add("abc");
		list.add("qwer");// list=[adfas,abc,qwer]
		Collections.fill(list, "qq");
		sop(list);// 打印结果:[qq,qq,qq]

 

 

 

 

                    Collections-replaceAll

 

                           public static <T> voidreplaceAll(List<T>list,T oldVal,T newVal)

 

                             使用另一个值替换列表中出现的所有某一指定值。更确切地讲,使用

 

                             newVal替换list中满足(oldVal==null ? e==null :

 

               oldVal.equals(e))的每个e元素。(此方法对列表的大小没有任

 

                             何影响。)

 

                           例:

 

		List<String> list = new ArrayList<String>();
		list.add("adfas");
		list.add("abc");
		list.add("abc");
		sop(list);// list = [adfas,abc,abc]
		Collections.replaceAll(list, "abc", "java");
		sop(list);// 打印结果为:[adfas,java,java]

 

 

 

 

                    Collections-reverse

 

                           public static viodreverse(List<T>list)

 

                             反转指定列表中元素的顺序。

 

                           例:

 

		List<String> list = new ArrayList<String>();
		list.add("adfas");
		list.add("abc");
		list.add("abc");
		sop(list);// [adfas,abc,abc]
		Collections.reverse(list);
		sop(list);// [abc,abc,adfas]

 

 

 

 

                    Collections-reverseOrder

 

                           public static <T> Comparator<T>reverseOrder()

 

                             返回一个比较器,它强行逆转实现了Comparable接口的对象

 

                             collection的自然顺序。(自然顺序是通过对象自身的compareTo方

 

                             法强行排序的。)此方法允许使用单个语句,以逆自然顺序对实现了

 

                             Comparable接口的对象 collection(或数组)进行排序(或维护)。

 

                           publicstatic <T> Compatator<T>reverseOrder(Comparator<T>cmp)

 

                             返回一个比较器,它强行逆转指定比较器的顺序。如果指定比较器为

 

                             null,则此方法等同于reverseOrder()(换句话说,它返回一个比

 

                             较器,该比较器将强行逆转实现了 Comparable接口的对象 collection

 

                             的自然顺序)。

 

                    Collections-synchronized…

 

                           public static <T>Collection<T>synchronizedCollection(Collection<T> c)

 

                             返回指定 collection支持的同步(线程安全的)collection。为了保证

 

                             按顺序访问,必须通过返回的 collection完成所有对底层实现

 

                             collection的访问。

 

                           publicstatic <T>Set<T>synchronizedSet(Set<T> s)

 

                             返回指定 set支持的同步(线程安全的)set。为了保证按顺序访问,

 

                             必须通过返回的 set完成对所有底层实现 set的访问。

 

                           publicstatic <K,V>Map<K,V>synchronizedMap(Map<K,V> m)

 

                             返回由指定映射支持的同步(线程安全的)映射。为了保证按顺序访

 

                             问,必须通过返回的映射完成所有对底层实现映射的访问。

 

                    Collections-swap

 

                           public static voidswap(List<?> list,int i,int j)

 

               在指定列表的指定位置处交换元素。(如果指定位置相同,则调用此

 

                             方法不会更改列表。)

 

                    Collections-shuffel

 

                           public static voidshuffle(List<?> list)

 

                             使用默认随机源对指定列表进行置换。所有置换发生的可能性都是大

 

                             致相等的。

 

                           publicstatic voidshuffle(List<?> list,Random rnd)

 

               使用指定的随机源对指定列表进行置换。所有置换发生的可能性都是

 

                             相等的,假定随机源是公平的。

 

      【Arrays】

 

             此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数

 

             组作为列表来查看的静态工厂。

 

      【Arrays中的常见方法】

 

             Arrays-binarySearch

 

                    使用二分搜索法来搜索指定数据类型数组,以获得指定的值或对象的索引。该

 

                    方法有多种重载方法,可参考帮助文档

 

             Arrays-copyOf

 

                    返回指定长度的原数组,如果指定长度大于原数组的长度,则大于的那部分会

 

                    用数组类型的默认值填充。

 

该方法有多种重载方法,可参考帮助文档

 

             Arrays-copyOfRange

 

                    返回指定范围的原数组;其中有三个参数:

 

                    original:原数组

 

                    intfrom:要复制的范围的初始索引(包括),from必须位于 0 和

 

                                  original.length(包括)之间,并且from必须大于to

 

                    intto:要复制的范围的最后索引(不包括),如果to大于原数组的长度,

 

                                  则大于的那部分会用数组类型的默认值填充。

 

                    该方法有多种重载方法,可参考帮助文档

 

             Arrays-sort

 

                    对指定数据类型数组按数字升序进行排序。

 

                    该方法有多种重载方法,可参考帮助文档

 

             Arrays-toString

 

                    返回指定数组内容的字符串表示形式。

 

该方法有多种重载方法,可参考帮助文档

 

             Arrays-hashCode

 

                    基于指定数组的内容返回哈希码。

 

该方法有多种重载方法,可参考帮助文档

 

             Arrays-fill:

 

                    用指定数据类型数据覆盖指定数组中指定范围的数据

 

                    若方法中没有fromIndex和toIndex两个参数,则表明用指定数据类型数据覆

 

                           盖整个数组中的数据

 

                    若方法中有fromIndex和toIndex两个参数,则覆盖的范围从索引fromIndex

 

             (包括)一直到索引toIndex(不包括)

 

                           其中fromIndex > 0 & fromIndex<数组.length& fromIndex < toIndex

 

该方法有多种重载方法,可参考帮助文档

 

             Arrays-equals

 

                    比较两个指定数据类型的数组,如果彼此相等,则返回true。

 

该方法有多种重载方法,可参考帮助文档

 

             Arrays-asList

 

                    public static <T>List<T>asList(T... a)

 

                      返回一个受指定数组支持的固定大小的列表。

 

                      把数组转换成List集合有什么好处?

 

                           可以使用集合的思想和方法来操作数组中的元素

 

                    例:

 

import java.util.*;

class ArraysDemo {
	public static void main(String[] args) {
		String[] arr = { "sdff", "ffrgr", "java", "bbng", "ppmlkk" };
		List<String> list = Arrays.asList(arr);
		sop(list);// 打印结果为:[sdff,ffrgr,java,bbng,ppmlkk]
		sop("java contains:" + list.contains("java"));// java contains:true
	}

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

 

 

 

 

注意:

 

  1. 对于由数组转换成的集合,不可以使用集合中的增加、删除操作

  2. 如果数组中的元素都是对象,那么变成集合时,数组中的元素会直接转换成List集合中的元素,如果数组中的元素都是基本数据类型,那么会将该数组作为List集合中的元素

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值