A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sanguodouble1 中级黑马   /  2014-3-7 11:01  /  869 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 sanguodouble1 于 2014-3-7 11:02 编辑

恩,集合,顾名思义,就是将各种对象放到一个容器里,跟数组的区别:长度可变,存储对象可以不同

主要有两大类,Collection 和 Map

1.Collection

Collection是一个集合的接口,他下面的子类有:

1.1 List接口:有序,有索引,可重复
1.1.1 ArrayList:底层以数组实现,增删满,查询快,不同步
1.1.2 LinkedList:底层以链表实现,增删快,查询满,不同步
1.1.3 Vector:以数组实现,被ArrayList取代,线程同步
Note:对于是否存在以及删除等操作,依赖的方法是元素的HashCode()和equals()方法;
而ArrayList对于判读存在以及删除等,用的只有equals()方法

1.2 Set接口:无序,无索引,不可重复
1.2.1 HashSet无序,不重复,高效,底层以哈希表实现。不同步
保证元素唯一性的实现原理:HashCode方法和equals方法,如果HashCode相同,直接存入;如果HashCode的值相同,则调用equals方法,看是不是返回true,如果true就是相同元素了。
1.2.1.1 LinkedHashSet:有序,是HashSet的子类
1.2.2 TreeSet有序,不重复,底层以二叉树实现。不同步
保证元素唯一性的实现原理:Comparable的compareTo()方法的返回值。
TreeSet的排序方法:
1.默认方法:自然排序,通过实现Comparable接口compareTo()方法来完成
2.比较器:如果添加的元素本身不具备可比较性或是不是自己想要的比较方式,将比较器作为参数传递进去。
通过实现Comparator接口的compare()方法,当主要条件相同时,比较次要条件
如果同时存在两种排序方法,采用第二种

2.Map

跟Collection的单一元素不同,Map存储的是键值对元素,他下面的子类有:

2.1 HashTable:有序,不可存Null的值和键,同步
Properties是HashTable的子类,他是集合和IO流的结合产物,可以保存在流中或者从流中加载
2.2 HashMap:底层以哈希表实现,可存Null值的键值对,无序(只能自定义通过key排序),高效,不同步
2.3 TreeMap;底层以二叉树实现,可排序,不同步

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

1 个回复

倒序浏览
很好,很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马