您的位置:首页 > 职场人生

黑马程序员-集合概念与工具类Collections

2013-10-30 22:41 375 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------

数组和集合类同是容器,有何不同?


数组中可以存储基本数据类型,也可以存储对象,

集合只能存储对象

数组长度是固定的

集合长度是可变的

有个疑问:

在java中,所有元素都是对象,对于基本数据类型,实际上也是一个对象,因为java对基本数据类型有自动装箱和拆箱的功能,所以,数组和集合的区别应该在存储的内容上没有区别才对?是否可以说,集合也可以存储基本数据类型?

解答:JDK1.5之后,集合中可以添加基本数据类型,就是自动装箱拆箱的缘故.所以如果要往集合里装基本数据类型的时候,特别是涉及到泛型的写法

这样的泛型写法是错误的:

TreeMap<char,int>treemap=newTreeMap<char,int>();

应该这样写

TreeMap<character,Integer>treemap=newTreeMap

<character,Integer
>();

集合类的特点


集合只用于存储对象(不能存储基本数据类型),集合长度是可变的,集合可以存储不同类型的对象。

Collection接口有两个子接口:

List:可存放重复元素,元素存取是有序的。(有序可重复)

Set:不可以存放重复元素,元素存取是无序的(无序不可重复)

迭代取出方法Iterator()是Collection里面的方法,所有,Collection的子类都具有Iterator()

一道面试题:collection和collections有什么区别?

Collection是一个接口,也可以说是一个框架

Collections专门用于对集合进行操作的工具类,

几个主要的功能方法:

排序:


publicstatic<TextendsComparable<?superT>>voidsort(List<T>list):根据元素的自然顺序对指定列表按升序进行排序

publicstatic<T>voidsort(List<T>list,Comparator<?superT>c):根据指定比较器产生的顺序对指定列表进行排序

翻转:


staticvoidreverse(List<?>list)
:反转指定列表中元素的顺序


Ps:
注意,该方法是没有返回值类型的,是直接修改了元素在集合中的位置




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




publicstatic<T>Comparator<T>reverseOrder(Comparator<T>cmp)
:返回一个比较器,它强行逆转指定比较器的顺序。如果指定比较器为null,则此方法等同于reverseOrder()


Ps:
注意,该方法是传入一个比较器对象,然后返回一个比较器对象,改变了传入比较器内部的比较方式


加锁:


重点介绍一下加锁方法

synchronizedList(List<T>list)

synchronizedMap(Map<K,V>m)

synchronizedSet(Set<T>s)

传入未加锁的集合,返回一个加锁的集合

将数组转变成集合,不能使用集合的增删方法,因为数组的长度是固定的,如果使用了增删操作,那么会抛异常

例:

Listlist=Array.asList(arr);

List.add(“01”);

这个编译会不通过

一个注意的地方:


如果数组中的元素都是对象,那么转成集合时,数组中的元素就会直接转成集合中的元素

如果数组中的元素都是基本数据类型,那么会将数组名作为集合中的元素存在

int[]arr={4,3,4,2,5,6}

错误的写法List<Integer>Arrays.asList(arr);

正确的写法:List<int[]>Arrays.asList(arr);

对于Integer[]arr={4,3,4,2,5,6};

正确的写法List<Integer>Arrays.asList(arr);

错误的写法:正确的写法:List<Integer[]>Arrays.asList(arr);

为什么要把集合转成数组?

为了限制对元素的操作,因为数组的长度是固定的,限制增删操作

----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------

详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐