欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Set,List,Map 集合

程序员文章站 2022-07-14 08:34:59
...

Set,List,Map 集合


Set:无序,元素不可重复(相对于元素的hashcode和equals来说)。
没重写hashCode()和hashCode()之前
Set,List,Map 集合
在实体类中重写相关方法
Set,List,Map 集合
重写后
Set,List,Map 集合


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类是一个完全抽象类但却不是接口。

Set,List,Map 集合


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:
Set,List,Map 集合
HashMap:
Set,List,Map 集合

HashTable线程安全
HashTable:
Set,List,Map 集合

Ps:英语水平有限,望指正。

相关标签: 集合类 map