Set,List,Map 集合
Set:无序,元素不可重复(相对于元素的hashcode和equals来说)。
没重写hashCode()和hashCode()之前
在实体类中重写相关方法
重写后
An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value.
map是指某个对象的键和值有映射关系。一个map对象不能包含重复的键,每个键至多映射一个值。(但是若干键可以映射到一些相同的值。)
This interface takes the place of the Dictionary class, which was a totally abstract class rather than an interface.
Map接口替代了Dictionary类,Dictionary类是一个完全抽象类但却不是接口。
The Map interface provides three collection views, which allow a map’s contents to be viewed as a set of keys, collection of values, or set of key-value mappings. Some map implementations, like the TreeMap class, make specific guarantees as to their order; others, like the HashMap class, do not.
Map接口提供了三种集合视图(仅查看,Map本身不提供迭代器),允许map中的内容显示为set类型( keySet() )的键,collection类型的值( values() )或者set类型的键值对( entrySet() )。一些map的实现类,像TreeMap,可以对顺序有特殊的设定(排序器)。另一些,像HashMap则没有。
Map<Integer, Integer> tmap = new TreeMap<Integer,Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1); //按键值降序
//return o1.compareTo(o2); //按键值升序(默认)
}
});
A special case of this prohibition is that it is not permissible for a map to contain itself as a key. While it is permissible for a map to contain itself as a value.
特别需要注意的是不允许把map本身作为键,但是可以作为值。(应用场景是什么?)
Map可以存放Null值和Null键。
Map<Integer, Map<Integer, String> > map = new HashMap<Integer, Map<Integer, String>>();
TreeMap和HashMap都是非线程安全的
可以通过源码中方法是否有synchronized关键字看出,当然文档也有说明。
TreeMap:
HashMap:
HashTable线程安全
HashTable:
Ps:英语水平有限,望指正。
推荐阅读
-
.NET Core 使用NPOI读取Excel返回泛型List集合
-
四种常见的数据结构、LinkedList、Set集合、Collection、Map总结
-
像使用SQL一样对List对象集合进行排序
-
详解ES6中的 Set Map 数据结构学习总结
-
python 集合 并集、交集 Series list set 转换的实例
-
【转载】C#中List集合使用RemoveRange方法移除指定索引开始的一段元素
-
List/Map 导出到表格(使用注解和反射)
-
20_集合_第20天(Map、可变参数、Collections)_讲义
-
Python—数据类型之集合(Set)
-
python笔记 list tuple dict set