集合

集合框架图

Collection

所有单值集合的顶级接口

常用方法:
     add(Object obj):将obj元素添加到集合中
     remove(Object obj):将obj元素从集合中删除
     clear():将集合中的元素清空
     isEmpty():判断集合是否为空
     contains(Object obj):判断集合中是否包含obj元素
     size():返回集合中的元素个数

List

Collection的子接口

顺序存储,有下标索引,允许重复

特有方法:
     add(int index, Object obj):在指定索引上,添加指定元素
     remove(int index):删除指定索引上的值
     set(int index, Object obj):将指定索引上的值,
     修改为指定的值
     get(int index):根据给定的索引,获取对应位置的值

包含三个实现类:

ArrayList:数组实现,顺序存储

LinkedList:节点实现,链式存储(每个元素都存储在一个节点中,节点除了元素数据本身以外,还 需要存储下一个元素的内存地址)

特有方法:
     由于在LinkedList中,维护了链表的头和尾节点的对象地址,
     所以操作头部和尾部非常容易,提供了大量的操作头和尾的方法。
     addFirst(Object obj):在头部添加元素
     addLast(Object obj):在尾部添加元素
     removeFirst():删除头部元素
     removeLast():删除尾部元素
     getFirst():获取头部元素
     getLast():获取尾部元素

Vector

Set

Collection的子接口
特点:无序,不允许重复,没有下标索引

实现类:HashSet

HashSet的子类:LinkedHashSet

Map

存储的是一个个的 键值对 数据

是双值集合的顶级接口

常用方法:

1、增加键值对:put(K key, V value),注意:如果添加的键值对中的键之前存储过值,则会覆盖,并将旧值返回出去,如果都是新存储的键值,则返回null
2、删除方法:
     根据给定的键,取出并删除对应的键值对:remove(K key)
     清空集合:clear()
3、获取方法:
     获取集合的大小:size(),获取键值对对数
     根据给定的键,获取对应的值:get(K key)
4、判断方法:
     判断集合中是否存在某个键:containsKey(Object obj)
     判断集合中是否存在某个值:containsValue(Object obj)
5、修改方法:
     根据给定的键,修改对应的值:put(K key, V value)
     如果在集合中已经存在key这个键,那么使用put方法,就是修改
     其对应的值;如果集合中不存在key这个键,那么使用put方法,
     就是在集合中增加了一个键值对

6、遍历方法:

     因为键值都是自己指定的,所以是无序的,遍历map只能通过以下方法来实现。

     keyset(),获取键的set集合,然后遍历键的set集合,得到每一个键,通过键去找值:get(K key)。

实现类:

HashMap

HashMap和HashSet的关系

HashSet是由HashMap实现出来的,HashSet就是HashMap的 键的那一列

HashMap的子类LinkedHashMap

HashMap和Hashtable的关系
1、HashMap和Hashtable都是用于存储键和值的对应关系,
   都是Map的实现类,都是使用哈希表的方式存储。
2、不同点:
     1、版本不同,Hashtable是jdk1.0版本出现的,
        HashMap是jdk1.2版本出现的
     2、线程安全性不同,Hashtable是线程安全的,
        HashMap是线程不安全的
     3、Hashtable不能存储null键null值,
        HashMap可以存储null键null值
     4、命名规则:Hashtable时期没有形成完全严格的命名要求
 

集合的遍历方式:

1.转成数组,toArray(),不带泛型的转数组,得到的是 Object类型的数组。

2.迭代器,使用案列:

//获取迭代器对象
        Iterator it = persons.iterator();
        //反复判断是否有下一个元素(迭代器对象在不断的移动)
        while(it.hasNext()) {
             //获取下一个元素并且强转
            Person p = (Person)(it.next());
            //输出p
            System.out.println(p.getName() + "..." +
             p.getAge());

3.增强for循环,快捷键iter,注意: 使用增强for,没有拿到元素的索引,无法修改集合或者 数组中的元素值

4.Map集合遍历方法:

因为存储的是键值对且都是自己指定的,所以是无序的,要先通过keyset(),获取键的set集合,然后遍历键的set集合,得到每一个键,通过键去找值:get(K key)。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值