集合和[]的一些问题
来源:互联网 发布:dg加密软件 编辑:程序博客网 时间:2024/06/06 05:10
今天看了一篇讲集合和数组的文章,发现了很多以前没有注意到的地方。总结如下:
第一点是说的性能方面:
来看代码:
<span style="white-space:pre"></span>List<String> arrayList = new ArrayList<String>(); <span style="white-space:pre"></span>arrayList.add("a");arrayList.add("b");arrayList.add("c");arrayList.add("d");arrayList.add("e");arrayList.add("f");arrayList.add("g");arrayList.add("h");//1String[] s1 = arrayList.toArray(new String[arrayList.size()]);//2String[] s2 = arrayList.toArray(new String[0]);//3List<String> list1 = new ArrayList<String>(arrayList);//4List<String> list2 = (List<String>) Collections.unmodifiableCollection(arrayList);
第二点说的是接口方面:
集合提供了一系列的方法供用户使用,例如equals和toString,这些是数组没有的.
List<String> list = new ArrayList<String>();list.add("a");list.add("b");//trueSystem.out.println(list.equals(Arrays.asList("a","b")));String[] s = {"a","b"};//falseSystem.out.println(s.equals(new String[]{"a","b"}));
另外集合还可以检查包含的元素,提取子列表和计算交集等等。
说到Collections.unmodifiableCollection(arrayList)方法,还看到一篇讲用在什么地方的,这个方法的作用是返回一个只读操作的集合.
就像在Student类里我们有一个课程的集合,一般我们都是getCourse()拿到这个集合然后再使用add()方法往里面增加课程,但是这样一来,
岂不是变成了对Course对象的增加,对于面向对象编程来说,应该是学生主动去增加课程啊,也就是说,学生类里面应该有一个增加课程
的方法,于是写了一个public void addCourse(Course course){courseList.add(course)}方法,但是你并没有保证getCourse().add(course)
不能使用啊,所以这里我们就要用到Collections.unmodifiableCollection(courseList);了,它返回一个只读的集合,当你尝试用getCourse.add(course)
方法时,会抛出一个java.lang.UnsupportedOperationException异常,这样一来就达到了我们的要求。
0 0
- 集合和[]的一些问题
- 集合的一些问题?
- 一些小问题的集合
- nucleus 嵌入式系统的一些问题集合
- [转]wince的一些小问题集合
- 一些简单编程问题的集合(转)
- JAVA-关于集合的一些问题
- ssm框架整合的一些问题集合
- 工作中遇到的一些问题集合
- 集合框架的一些问题(持续更新)
- 关于建立保持时间以及时序的一些问题集合
- 编译kernel源代码遇到的一些小问题集合
- 用jdbc返回集合数据时的一些小问题
- 关于使用RecyclerView遇到的一些问题集合
- 有关二叉树的一些问题集合(一)
- vue学习过程遇到的一些问题集合
- JS和${}的一些问题
- 一些排序的集合
- 1109-Too Naive
- redis服务器
- Mycat - MysqlAB复制 读写分离
- iOS 获取健康里的信息(步数和公里数)
- MATLAB读取数据文件
- 集合和[]的一些问题
- 王学岗RxJava(三)
- 关系运算
- ios初学练习
- 可变参数宏(用于调试)
- uva 532
- 实现一个自己的网络浏览器
- 逻辑运算
- bzoj 2721: [Violet 5]樱花 线性筛