黑马程序员-集合概念与工具类Collections
2013-10-30 22:41
375 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
详细请查看:http://edu.csdn.net
ASP.Net+Android+IOS开发、
数组和集合类同是容器,有何不同?
数组中可以存储基本数据类型,也可以存储对象,
集合只能存储对象
数组长度是固定的
集合长度是可变的
有个疑问:
在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开发、
详细请查看:
相关文章推荐
- 黑马程序员——Java语言基础:集合框架(Collection、Map,工具类Collections、Arrays)
- 黑马程序员—java基础学习--Map集合、Collections,Arrays工具类
- 黑马程序员_集合_map集合以及集合工具类Collections
- 黑马程序员——JAVA基础——集合---概述、Collection中共性方法、List、Map、工具类Collections和Arrays
- 黑马程序员——6.集合类(String/StringBuffer、List、Set、Map、Collections工具类、Arrays工具类 )
- 黑马程序员_Java第17天知识总结_集合框架的工具类_Collections_Arrays_将数组变成list集合_集合变数组_高级for循环_可变参数
- 黑马程序员 java 基础 毕向东 面向对象 集合框架 工具类 Collections and Arrays
- 黑马程序员——Java基础---泛型、集合框架工具类:Collections和Arrays、JDK 1.5新特性
- Java基础---泛型、集合框架工具类:collections和Arrays (黑马程序员)
- 黑马程序员-博客 (6) 集合之Collection接口和Iterator方法、Collection接口和Collections工具类
- 黑马程序员-JAVA基础-Java 集合之Collections 工具类
- 黑马程序员----集合工具类(Arrays和Collections)
- 黑马程序员:Collections:集合框架工具类介绍及二分法原理介绍
- 黑马程序员_Map集合和Collections工具类
- 黑马程序员 java基础集合框架之集合工具类Collections
- 黑马程序员——集合——Set集合,增强for循环,数据结构,泛型,Collections集合工具类
- 黑马程序员---集合框架工具类Collections,数组工具类Arrays常见方法以及1.5版本新特性(高级for,可变参数和静态导入)
- 黑马程序员_温习 集合六 (个人笔记)摘要(Collections集合工具类-----Arrays数组工具类-----高级for----可变参数----静态导入)
- 黑马程序员——Java之集合框架工具类Collections、Arrays以及Java新特性
- 黑马程序员——Java基础---泛型、集合框架工具类:collections和Arrays