JavaSE集合框架总结
来源:互联网 发布:js 清除cookie 编辑:程序博客网 时间:2024/06/06 00:52
Map<T>、Set<T>、List<T>比较总结
Map<T>
Set<T>
List<T>
元素特点
Key-value存储
Key不可重复
Value可重复
直接存储
不可重复
直接存储
可重复
遍历方式取出时
KeySet+Iterator方式
EntrySet+Iterator方式
Iterator方式
Iterator方式
或索引方式
遍历取出时
HashMap无序
TreeMap Key有序
HashSet无序
TreeSet有序
有序(先添加的索引为0)
使用时注意
事项
HashMap的Key是否自定义重复规则
TreeMap是否需要自定义比较排序的规则
是否需要自定义重复规则
TreeSet是否需要自定义比较排序规则
是否有删除或者插入操作,有就LinkedList,有搜索操作用ArrayList
有无get方式取出
有get(Key)方式
无get方法
有get(index)方式
一、List<T>接口的实现类的用法
1、ArrayList<T>直接创建对象进行方法调用,常用方法如下。
1、创建List<T> list = new ArrayList<>();
名称
功能
add(T)
增加一个元素
get(i )
取出某个元素
Contains(T)
是否包含某元素
isEmpty()
集合是否为空
Set(index,T)
替换指定位置的元素
Remove(index)
删除指定元素
Clear()
清空
2、遍历方式
1、有索引遍历
For(int i = 0; i < list.size(); i++ )
{
T t = list.get(i);
}
2无索引方式
For(Iterator iter = list.iterator();iter.hasNext();)
{
T t = iter.next();
}
3、底层维护的是数组,是有序的,可以添加重复的元素
2、LinkedList<T>直接创建对象进行方法调用,常用方法如下。
1、创建List<T> list = new LinkedList<>();
名称
功能
add(T)
增加一个元素
get(i )
取出某个元素
Contains(T)
是否包含某元素
isEmpty()
集合是否为空
Set(index,T)
替换指定位置的元素
Remove(index)
删除指定元素
Clear()
清空
2、遍历方式
1、有索引遍历
For(int i = 0; i < list.size(); i++ )
{
T t = list.get(i);
}
2无索引方式
For(Iterator iter = list.iterator();iter.hasNext();)
{
T t = iter.next();
}
3、底层维护的是一个个的Entry对象,是有序的,可以添加重复的元素,可以用来实现队列与栈的数据结构。
LinkedList与ArrayList总结
LinkedList
ArrayList
使用方式
New
New
遍历
For循环+索引或者Iterator
For循环+索引或者Iterator
底层
双向循环链表
数组
使用特点
有删除和插入操作时
搜索操作时
List是元素是可重复的,取出是有序的,有get方法取出。
二、Set<T>接口的实现类的用法
1、HashSet<T>直接创建对象进行方法调用,常用方法如下。
1、创建Set<T> set = new HashSet<>();
名称
功能
add(T)
增加一个元素
Contains(T)
是否包含某元素
isEmpty()
集合是否为空
Remove(index)
删除指定元素
Clear()
清空
2、遍历方式
1、只有无索引方式
For(Iterator iter = set.iterator();iter.hasNext();)
{
T t = iter.next();
}
3、HashSet的元素特点是元素无重复,取出时无序,所以在添加元素到集合的时候需要判断此对象是否已经被添加,判断规则需要自己实现,实现的时候一般是元素类中重写HashCode与equals方法。String类已经重写了HashCode与equals方法,内容一样则说明俩个对象一样,默认的Object类的比较方法是判断俩个对象的地址是否一样决定是否为同一元素。
2、TreeSet<T>直接创建对象进行方法调用,常用方法如下。
1、创建Set<T> set = new TreeSet<>();
名称
功能
add(T)
增加一个元素
Contains(T)
是否包含某元素
isEmpty()
集合是否为空
Remove(index)
删除指定元素
Clear()
清空
First()
返回第一个元素
Last()
返回最后一个元素
2、遍历方式
1、只有无索引方式
For(Iterator iter = set.iterator();iter.hasNext();)
{
T t = iter.next();
}
3) TreeSet的元素特点是元素无重复,取出时有序,所以在添加元素,不仅需要进行对象是否存在的判断,还要进行排序,TreeSet的默认排序规则是自然排序(数字大小)或者字母顺序,对象的顺序需要调用实现自己的比较规则,在元素类定义时实现comparator接口,修改compare方法;
HashSet与TreeSet总结
Hashset
TreeSet
使用方式
New
New
遍历
Iterator方式
Iterator方式
使用特点
元素无重复
元素无重复并有序
注意事项
实现对象重复比较
实现对象重复比较外还需实现有序的规则
使用特点在代码上的体现
元素类重写HashCode与equals方法
元素类实现Comparator接口,并重写compare方法
Set<T>元素不可重复,取出时HashSet无序,TreeSet有序,没有get方法取元素,遍历只能用Iterator接口迭代的方法。
一、Map<T>接口的实现类的用法(映射机制 Key - value)
1、HashMap<T>直接创建对象进行方法调用,常用方法如下。
1、创建Map<T> map = new HashMap<>();
名称
功能
put(Key,value)
增加一对值
get(key )
取出对应Key的Value值
ContainsKey()
是否包含某个Key
ContainsValue()
是否包含某个Value;
isEmpty()
集合是否为空
EntrySet()
返回所有实体的Set集合
KeySet()
返回所有key的Set集合
Remove(key)
删除指定Key元素
Clear()
清空
Values();
返回所有的value集合
2、遍历方式
1、KeySet方式遍历
Set<T> set = map.keySet();
For(Iterator iter = set.iterator;iter.hasNext();)
{
T key = iter.next();
T value = map.get(key);
}
2、EntrySet方式遍历
Set<Map.Entry<T>> set = map.EntrySet();
For(Iterator iter = set.iterator;iter.hasNext();)
{
Map.Entry<T> entry = iter.next();
T Key = entry.getKey()
T value = entry.getValue();
}
3、HashMap的元素特点是Key-Value对存储的,Key不能重复,Value可以重复,增加元素对的时候如果该key存在时,则用现在的value代替原来的value值,遍历取出元素对时是无序的,可以用get(Key)的方式取value,如果该Key不存在则返回null;
2、TreeMap<T>直接创建对象进行方法调用,常用方法如下。
1、创建Map<T> map = new TreeMap<>();
名称
功能
put(Key,value)
增加一对值
get(key )
取出对应Key的Value值
ContainsKey()
是否包含某个Key
ContainsValue()
是否包含某个Value;
isEmpty()
集合是否为空
EntrySet()
返回所有实体的Set集合
KeySet()
返回所有key的Set集合
Remove(key)
删除指定Key元素
Clear()
清空
Values();
返回所有的value集合
2、遍历方式
1、KeySet方式遍历
Set<T> set = map.keySet();
For(Iterator iter = set.iterator;iter.hasNext();)
{
T key = iter.next();
T value = map.get(key);
}
2、EntrySet方式遍历
Set<Map.Entry<T>> set = map.EntrySet();
For(Iterator iter = set.iterator;iter.hasNext();)
{
Map.Entry<T> entry = iter.next();
T Key = entry.getKey()
T value = entry.getValue();
}
3、TreeMap的元素特点是Key-Value对存储的,Key不能重复,Value可以重复,增加元素对的时候如果该key存在时,则用现在的value代替原来的value值,遍历取出元素对时Key是有序的,默认是自然顺序,可以让key类实现Comparator接口自定义Key的排序,可以用get(Key)的方式取value,如果该Key不存在则返回null;
HashMap与TreeMap总结
Hashset
TreeSet
使用方式
New
New
遍历
KeySet+Iterator方式
EntrySet+Iterator方式
KeySet+Iterator方式
EntrySet+Iterator方式
使用特点
Key不可重复Value可重复并取出时无序
Key不可重复Value可重复并取出时Key有序
注意事项
无
实现对Key的有序的规则
使用特点在代码上的体现
无
MyCoparator<Key类型>类实现Comparator接口,并重写compare方法
Map<T> 中Key-value对中Key不可重复,value可重复,取出时HashMap无序,TreeSet有序,有get(Key)方法取Value,遍历都可以用KetSet()+Iterator接口迭代和EntrySet()+Iterator接口迭代的方法。
TreeMapTreeSet用到设计模式(策略模式 Strategy)
1) 抽象策略角色abstractStrategy(一个抽象类或接口)例如comparator接口
2) 具体策略角色(包装了相关的算法和行为,例如:比较行为)
3) 环境角色(持有抽象策略角色的一个引用,以及改变策略的方法,最终给客户端调用,)
4) 客户端(开发者)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
- JavaSE集合框架总结
- JavaSE总结 -集合框架collection
- JavaSE总结-集合框架-List
- JavaSe总结-15- 集合框架
- JavaSe总结-16- 集合框架(2)
- JavaSe总结-17- 集合框架(3)
- JavaSe总结-18- 集合框架(4)
- JAVASE之集合框架
- JAVASE----09----集合框架
- javaSE--集合框架
- 黑马程序员——JavaSE之集合框架总结二
- JavaSe集合总结
- JAVASE总结--集合
- [JavaSe学习笔记-集合框架]
- JavaSE学习笔记--集合框架
- JAVASE之集合框架-----List
- JAVASE之集合框架-----Set
- JAVASE之集合框架-----Map
- linux基本命令
- java8中lambda表达式用法再探
- 日志记录规范
- OpenCV学习笔记(六)离散傅里叶变换
- 第十五周项目—字符串插入
- JavaSE集合框架总结
- javaSe中 面试问的问题
- 【内部类】局部内部类及应用
- [LeetCode]Compare Version Numbers
- 光标的合理形状应该怎样?
- 可穿戴设备安全性分析(fitbit)
- 加密的简单介绍
- CommonJS AMD CMD UMD RequireJS的区别
- 深入理解C++的动态绑定和静态绑定