Thinking in Java 学习笔记2 集合

集合的引入正如上一篇文章所说的,数组已经不能满足人们的需要了,而且加上泛型从出现,使得集合越来越好用,所以集合也就应运而生。换个简单的说法,集合就是Java内置的数据结构的统称。

1.集合的开始是从接口开始的,因为作为数据结构的基层,有很多方法是共同的,所以用接口来保存这些方法,接口与类的实现相分离。
Iterable>>Collection>>List||Set||Queue
Map
而这些接口有具体的实现类:
List:ArrayList(多用于频繁的随机访问)
LinkedList(多用于频繁的插入删除)
Set:HashSet(快)
TreeSet(使元素按照排序状态保存)
LinkedHashSet(使元素按照插入的顺序来保存)
Map:HashMap(用来快速访问)
LinkedHashMap(保持元素插入顺序)
TreeMap(使键处于排序状态来保存元素)
Queue以及栈:(用LInkedList提供支持)
已过时:Vector,Hashtable,Stack

2.Iterable:( public interface Iterable<T>,实现这个接口允许对象成为 "foreach" 语句的目标)

这个接口只有一种方法,用来生成一个迭代器



3.Collections:(同Arrays一样,java.util中也有一个Collections类,有很多实用方法,包括copy,fill,max,min,reverse,sort等方法)


4.Java的泛型使容器指定保存的数据类型,从而在编译期间就可以检查错误,而不用等到运行时。容器不能持有基本类型,但是包装类的自动包装机制可以解决这个问题。
5.因为collection和map都是接口,所以唯一需要精确类型的就是new 的时候
List<Apple> apples = new ArrayList<Apple>();
这体现了多态的思想,ArrayList向上转型成List,便于修改
Apples = new LinkedList<Apple>();
但是如果要用到LinkedList特有的方法就不能这样了,因为List类型的apples只有通用的方法。
6.所有实现iterable接口的类都可以用foreach方法。(以及数组)
7.添加一组元素
Collection.addAll():只能接收另一种collection对象作为参数
Collections.addAll()和Arrays.asList:参数都是可变列表
Arrays.asList实现了数组到List的转变,但是底层还是数组,所以不能添加或删除元素。
8.Java迭代器被认为是处于两个元素之间,所以它的方式是调用next时,iterator越过下一个元素,返回刚刚越过元素的引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值