ZKX's LAB

Java集合类ListSetMap的区别和联系 map不重复数据结构

2021-04-09知识6

Java的数据结构你用过哪些?Map与Set的本质区别是什么? 个人认为:Map的本质就是Set;Set内部维护的是数组结构;Map.Entry是Map的内部接口,是key-value格式;Map.Entry覆盖了hash()方法,hashCode就是key的hashCode,因此key不能重复;且按照key的hashCode决定了在HashMap中的位置;Map.Entry覆盖了CompareTo()方法,返回的是key之间的比较,因此TreeMap是按照key来排序的;

JAVA中几种集合(List、Set和Map)的区别 Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.Comparator<;Type>;接口来自定义排序方式。List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。

若map添加重复的key会怎样 在使用map的时候,大家肯定会想到key-value,key用于检索value的内容。在正常情况下,可以不允许重复;但是其实重复在java中分为2中情况,一是内存地址重复,另一个是不同的地址但内容相等,而IdentityHashMap用于后者,即内容相等。更详细的解释如下:此类利用哈希表实现 Map 接口,比较键(和值)时使用引用相等性代替对象相等性。换句话说,在 IdentityHashMap 中,当且仅当(k1=k2)时,才认为两个键 k1 和 k2 相等(在正常 Map 实现(如 HashMap)中,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1=null?k2=null:e1.equals(e2)))。此类不是 通用 Map 实现!此类实现 Map 接口时,它有意违反 Map 的常规协定,该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。例如:class Person{private String name;private int age;public Person(String name,int age){this.name=name;this.age=age;}public boolean equals(Object obj){if(this=obj){return true;}if。(obj instanceof Person)){return false;}Person p=(Person)obj;if(this.name.equals(p.name)&this.age=p.age){return true;}else{return 。

#map不重复数据结构

随机阅读

qrcode
访问手机版