集合和[]的一些问题

今天看了一篇讲集合和数组的文章,发现了很多以前没有注意到的地方。总结如下:

第一点是说的性能方面:

来看代码:

<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");
		//1
		String[] s1 = arrayList.toArray(new String[arrayList.size()]);
		//2
		String[] s2 = arrayList.toArray(new String[0]);
		//3
		List<String> list1 = new ArrayList<String>(arrayList);
		//4
		List<String> list2 = (List<String>) Collections.unmodifiableCollection(arrayList);

第二点说的是接口方面:

集合提供了一系列的方法供用户使用,例如equals和toString,这些是数组没有的.

List<String> list = new ArrayList<String>();
		list.add("a");
		list.add("b");
		//true
		System.out.println(list.equals(Arrays.asList("a","b")));
		String[] s = {"a","b"};
		//false
		System.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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值