13容器(集合框架)

容器(集合框架)
容器的概念
容器 api
Collection接口
Iterator接口
Set接口
List接口
Comparable接口
Map接口
泛型

容器的概念
集合框架被设计成要满足以下几个目标。
该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。
对一个集合的扩展和适应必须是简单的。
集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。
实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
容器api
jdk所提供的容器api位于java.util包内
容器api的类图结构如下图:

Collection接口定义类存取一组对象的方法,其子接口Set和List分别定义了存储方式。
set中的数据对象没有顺序且不可以重复。
List中的数据对象有顺序且可以重复。
Map接口定义了存储“键(key)-值(value)对”的方法。
Collection接口

List接口

List和Set的区别
Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
ArrayList源码解析(jdk6、jdk7、jdk8)
https://blog.csdn.net/u011392897/article/details/57105709
LinkedList源码分析
https://www.cnblogs.com/leskang/p/6029780.html

Map和HashMap
https://blog.csdn.net/tuke_tuke/article/details/51588156

public class MapTest {
public static void main(String[] args) {
Map map = new HashMap();

    // put()
    map.put("xxx", "xxx");
    map.put("yyy", "yyy");
    map.put("zzz", "zzz");
    map.put("zzz", "kkk");

    // get()
    String result = (String) map.get("xxx");
    System.out.println("result : " + result);

    String resultZ = (String) map.get("zzz");
    System.out.println("resultZ : " + resultZ);

    // remove()
    map.remove("zzz");
    String resultZRemove = (String) map.get("zzz");
    System.out.println("resultZRemove : " + resultZRemove);

    map.put("zzz", null);
    String resultZNull = (String) map.get("zzz");
    System.out.println("resultZNull : " + resultZNull);

    // size()
    int sizeResult = map.size();
    System.out.println("sizeResult : " + sizeResult);

    // isEmpty()
    boolean isEmptyFlag = map.isEmpty();
    System.out.println("isEmptyFlag : " + isEmptyFlag);
    
    // containsKey()
    boolean containsKeyFlag = map.containsKey("zzz");
    System.out.println("containsKeyFlag : " + containsKeyFlag);
    
    // containsValue()
    boolean containsValueFlag = map.containsValue(null);
    System.out.println("containsValueFlag : " + containsValueFlag);
    
    // clear()
    map.clear();
    System.out.println(map.size());
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值