java学习——容器(集合)

    数据量大用对象存储,对象量大用容器(集合)/数组存储。然而,数组是定长的,并且要求是同一类型的。

    存储方式的不同,称为数据结构。正因为数据结构不一样,所以有这么多集合类型。

====================具体方法查API==================== 

容器(集合)地图:

  • Collection【interface】

    • Set【interface】(无序,不可重复)

      • HashSet

      • TreeSet

    • List【interface】(有序,可重复)

      • LinkedList

      • ArrayList

      • Vector

    • Map【interface】(键值对)

      • HashMap

      • TreeMap

      • HashTable

====================具体方法查API====================


在线API地址:http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html


Collection 

    有增(add、addAll)、删(remove、removeAll)、查(contains)、取(iterator)、取交集(retainAll)、hashCode、equals、size等常用方法。

    iterator详解:

    迭代器接口,调用此方法后,返回一个内部类对象(因为iterator是接口),这个内部类对象是所有集合类型的内部类,对外暴露有三个方法:hasNext、next、remove。

    注意:无论使用何种迭代器,都可以迭代器和集合并发操作(迭代器是集合的引用,对迭代器的操作就是对集合的操作),否则抛出异常。

List

    与拥有Collection的全部方法,另外特有的方法如下:

    增:add(index,element);   addAll(index,collection);

    删:remove(index);

    改:set(index,element);

    查:get(index);   subList(start,end);  listIterator();

    listIterator迭代器功能比Collection强大,除了包含Collection的方法,还可以set、previous、hasPrevious等等。

ArrayList

    数组结构存储的List,增、删较慢,查较快。初始长度为10,超出后new一个新数组(长度为50%原长,Vector为100%),copy原数组过去。

LinkedList

    链表结构存储的List,增、删较快,查较慢。

Vector(已抛弃)

    数组结构存储的List,增、删、改、查都慢,jdk1.0出现的(当时集合还没出现),jdk1.2后基本被ArrayList代替,唯一区别是Vector是线程同步的,ArrayList线程不同步。具有特有的遍历方法——枚举(已被迭代器取代,不建议使用)。

Set

    和Collection方法一样。

HashSet

    hash表结构存储的Set,线程非同步。

    添加元素时,先对比hashCode值,再equals判断(ArrayList是只经equals判断),查、删同理。遍历可知无序。

TreeSet

    Tree结构存储的Set,会对集合中的元素进行排序(默认是ASCII码表)。添加的元素具备比较性或者Tree集合具备。

    1、元素比较性:添加元素(类)时,此元素(类)必须实现Comparable接口,实现compareTo方法(即定义排序规则)。采用二叉树判断法(比如左小右大)排序(元素边多会自动折中判断)。顺序遍历,从下到上,从左到右;逆序遍历从右到左,从下到上

    2、Tree集合一初始化时就具备比较性(参照TreeSet的构造函数):自己写一个类实现Comparator接口,实现compare方法,然后再构造Tree时传入该类的实例。【常用】

    当元素(1)和容器(2)都具备比较性,以容器(2)为主。

Map

    存储键值对,增 (put注意返回值、putAll),删(clear、remove)、判(containsValue、containsKey、isEmpty)、获(get、size、values取所有的值返回到一个Collection)、entrySet、keySet。【Set的底层就是使用了Map的方法】

Hashtable

    jdk1.0时代,键/值不能为空,线程同步。

HashMap

    jdk1.2出现,键/值可以为空,线程不同步,代替了Hashtable的存在。【注意:null可以作为键】

TreeMap

    可以给Map中的键排序。


转载于:https://my.oschina.net/u/1580821/blog/481433

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值