黑马程序员_集合和数组工具类

来源:互联网 发布:stl源码剖析 百度云 编辑:程序博客网 时间:2024/04/29 05:06
---------------------- android培训、java培训、期待与您交流! ----------------------

       今天已将近集合的尾声,面对这些接口和接口的实现类,一时半会还不是了解的透彻,每天都跟着老师的步子走,总感觉自己的腿好像受了伤似的,眼看要追到老师了,但还是那么远那么远,不管怎么样还是要坚持,一定要挺到最后。即使片体鳞伤、手足残缺也要爬到山顶,这样早晨的阳光总是会先照到你。

还是来回忆一下今天老师到底讲了哪些知识吧。在java.util中,提供了两个工具类来对数组和集合进行操作,分别是CollectionsArrays工具类,我发现了一个问题,好像工具类的名称后面都是加了s的,但是不知道java包中是不是都是这样。以后还要多多留意一下后面加s的是不是对操作提供某种功能。

Arrays类是对数组进行操作的,他里面全部都是静态方法,常用的包括:

static <T> List<T> asList(T...a):将数组转换成List集合

static int binarySearch(int[] a,int key):使用二叉树查找法早找指定元素在数组中的位置

 static int[] copyOf(int[] original,int newLength):指定数组的长度并复制到其他数组

 static int[] copyOfRange(int[] original, int from,int to):复制指定的范围

 static boolean equals(int[] a,int[] a1):判断两个数组是否相等,

 statid void fill(int[] a,int val):将数组中的值变为指定的值,相当于初始化值

 static int hashCode(int[] a):返回数组的哈希值

 static void sort(int[] a,int fromIndex,int toIndex):指定数组范围并进行排序

 static <T> String toString(int[]a):将数组转换成字符串

 static boolean deepEqasls(Object[] al,Object[] a2):判断两个对象的深度是否相等

Collections:

static <T extends Comparable<? super T>> void sort(List<T> list):将集合进行排序,并可以指定集合参数的类型,要继承comparable接口,

       static void swap(List<?> list, int i, int j):根据指定的位置交换集合中的元素

       static void shuffle(List<?> list):对集合中元素位置随机发生变化

static <T> int  binarySearch(List<? extends Comparable<? super T>> list, T key):使用二分查找给出指定的值在集合中的位置

看看这些常用的方法,省去了我们大部分的时间,如果没有这些方法,像以前一样,什么功能都是自己写,对于数组的排序、查找等这些功能,只需要调用就可以了,不管是集合还是数组,他们之间既然存在关系,是否也能对在他们之间相互操作呢。那是当然的了,今天老师讲了,我刚才也操作了一遍,可以把一个数组转换成集合,也可以把集合转换成数组,但是还要注意一些问题,数组转集合:可以对数组中的元素通过集合中的方法进行操作,只要不影响其长度,可以使用集合中的任意方法。集合转数组:为了限制集合中元素操作,他只有一个length属性可以操作,不管是集合转数组还是数组转集合,长度是不可以改变的,不能对其进行增删操作。

唉!这个collectioncollections看起来是一样的,难到真表示的是一个意思,不会的了,既然多一个s和少一个s,可能还是有些不同的地方。好,那就来看看到底是哪些地方不同:

collection      collection是所有单列集合中的父接口,是以一组单个对象存储形式,根据需求,对象在内存中存储数据结构形式不同,collection就产生许多子接口,其中常用的是list接口和set接口,而ListArrayListlinkedList两个常用的实现类,它是有序可重复的,set接口有hashsettreeset两个实现类,是无序不可重复的。

collections    他是对集合操作的一种工具类,类中的方法全部都是静态的,可以对集合的排序,交换位置,二分查找,元素顺序随机变化。等操作。

Jdk5.0为我们提供了一些新特性:今天先来看看这两个吧:

增强for循环:

也就是foreach语句,他是for(;;;)语句的一种简写形式,他也是吧集合或者数组中的元素遍历出来,但是他和for(;;;)还是有些区别,为什么呢?因为在循环多次的时候,传统的循环可以对其循环条件的控制,而增强for不能控制,增强for只能是简化书写,遍历集合或数组中的元素,不能直接遍历map集合,但是可以通过把map集合转成set集合后,再根据set集合迭代出元素。

可变参数:

可变参数的使用格式:

  1.int add(T... a):该函数可以添加多个同种类型的数据,相当于函数的参数是数组形式。

  2.int add(T a,T... a1):在传参数时,除了第一个为a,其他全部都是属于可变参数。

  注意:可变参数必须放在其他参数的最后边。

这些知识点并不少啊,但是还要灵活运用。     

---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
原创粉丝点击