集合三

4.5Utilities工具类

4.5.1 Collections

Collections类静态方法

1publicstatic <T extendsComparable<? super T>> voidsort(List<T> list)

T extends Comparable表示T类型是可以排序的类型。

2public static <T> voidsort(List<T> list,Comparator<?super T> c)

T类型可以是不排序的类。

3public static <T extendsComparable<?super T>> Tmax(Collection<?extends T> coll)

4publicstatic <T>Comparator<T>reverseOrder():反转

static <T> Comparator<T>  reverseOrder() :返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序

static <T> Comparator<T>reverseOrder(Comparator<T> cmp) :返回一个比较器,它强行逆转指定比较器的顺序。

5、提供线程安全

集合许多接口、实现类有一个共同的缺点,那就是线程不安全,被多线程操作时,容易出现问题,虽然可以自己加锁但是麻烦。Collections提供特牛的方法,就是给它一个不同步的集合,它返回一个同步的安全的集合。

static <T> Collection<T>synchronizedCollection(Collection<T> c) :返回指定collection 支持的同步(线程安全的)collection。

static <T> List<T>  synchronizedList(List<T> list) :返回指定列表支持的同步(线程安全的)列表。

static <K,V> Map<K,V>synchronizedMap(Map<K,V> m) :返回由指定映射支持的同步(线程安全的)映射。 static<T> Set<T> synchronizedSet(Set<T> s) :返回指定 set 支持的同步(线程安全的)set。

static <K,V> SortedMap<K,V>synchronizedSortedMap(SortedMap<K,V> m):返回指定有序映射支持的同步(线程安全的)有序映射。

static <T> SortedSet<T>  synchronizedSortedSet(SortedSet<T> s):返回指定有序 set 支持的同步(线程安全的)有序 set。

4.5.2 Arrays

1、Arrays用于操作数组的工具类。

2、数组转成集合

A、public static <T>List<T>asList(T... a)a为数组,传进来a数组,asList方法将数组转成list集合。

B、将数组转成List集合的好处:可以使用集合的思想和方法来操作数组中的元素。

C、将数组转成List集合的弊端:不可以使用集合的增、删方法,因为数组的长度是固定的,但是例如contains\get\indexof\subList方法,如果使用了增删方法会出现UnsupportedOperationException异常。

D、注意点:如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。所以Integer和int[]是有区别的。

3、集合转成数组:此功能不是工具类中的是Collection接口中的toArray方法。

4.6JDK1.5新特性

4.6.1高级for循环

1、JDK1.5新特性,代替迭代器使用时的不爽,简化了书写。底层原理还是迭代器,凡是支撑迭代器的都支持高级for循环。

高级for循环只支持数组和集合。集合中还要注意Map集合需要先转化成Set集合,再用高级for。

2、格式

for(数据类型  变量名:被遍历的集合(Collection)或者数组){……}

3、高级for循环弊端:对集合进行遍历,只能获取元素,但是不能对集合进行操作。

迭代器除了遍历,还可以进行remove集合中的元素动作;迭代器如果是用ListIterator还可以对集合进行增删改查动作。

4、传统和高级for循环的区别

高级for有一个局限性,必须有遍历的目标(数组或者集合)。

建议在遍历数组的时候,还是使用传统for,因为可以使用角标(比如打印100次hello world)。

4.6.2可变参数

1、JDK1.5出现的新特性。可变参数其实就是数组的简写形式。只要将要操作的元素作为参数传递即可,隐式将参数封装成数组。

2、格式

方法的可变参数

格式:

public static void show(String str,int... arr)

{

 ……

}

注意:可变参数一定要放在参数列表的最后面

3、可变参数注意点:可变参数一定要定义在参数最后面。

4.6.3静态导入

1、JDK1.5出现的新特性。

2、格式:import static 包.*;

import导入的是包中的类;

import static导入的是包中类的成员变量(属性、方法)。

3、静态导入注意点

当类名重名时,需要指定具体的包名;

当方法名重名时,需要指定具体所属的对象或者类。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值