尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Java双列集合

Java双列集合 特点:1.双列集合一次需要存一对数据,分别为键和值2.键不能重复,值可以重复3.键和值是一一对应的,每一个键只能找到自己对应的值4.键值这个整体我们称之为“键值对”或者“键值对对象”,在Java中叫做“Entry对象”双列集合体系结构:一.Map介绍:Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的Map的常见API方法名称说明V put(K key,V value)添加元素V remove(Object key)根据键删除键值对元素void clear()移除所有的键值对元素boolean containsKey(Object key)判断集合是否包含指定的键boolean containsValue(Object value)判断集合是否包含指定的值boolean isEmpty()判断集合是否为空int size()集合的长度,也就是集合中键值对的个数put 添加元素细节:添加/覆盖在添加数据时,如果键不存在,那么直接把键值对对象添加到map集合中,方法返回null在添加数据时,如果键是存在的,那么会把原有的键值对对象覆盖,会把被覆盖的值进行返回Map的遍历方式1.键找值public class A02_MapDemo2 { public static void main(String[] args) { //Map集合的第一种遍历方式 键找值 MapString,String map new HashMap(); map.put(陆川,京城); map.put(赵一帆,河北); map.put(韩东,东北); SetString keys map.keySet(); //增强for for (String key : keys) { String value map.get(key); System.out.println(key value); } } }2.键值对public class A03_MapDemo3 { public static void main(String[] args) { //Map集合的第二种遍历方式 键值对 MapString,String map new HashMap(); map.put(陆川,京城); map.put(赵一帆,河北); map.put(韩东,东北); SetMap.EntryString, String entries map.entrySet(); //for循环 for (Map.EntryString, String entry : entries) { String key entry.getKey(); String value entry.getValue(); System.out.println(key value); } } }3.Lambda表达式public class A04_MapDemo4 { public static void main(String[] args) { //Map集合的第三种遍历方式 Lambda MapString,String map new HashMap(); map.put(陆川,京城); map.put(赵一帆,河北); map.put(韩东,东北); map.forEach(( key, value)- System.out.println(key value)); } }二.HashMap特点:1.HashMap是Map里面的一个实现类2.没有额外需要学习的特有方法,直接使用Map里面的方法即可3.特点都是由键决定的:无序、不重复、无索引4.HashMap跟HashSet底层原理是一样的,都是哈希表结构HashMap依赖hashCode方法和equals方法保证键的唯一如果键存储的是自定义对象,需要重写hashCode和equals方法;如果值存储自定义对象,不需要重写hashCode和equals方法三.LinkedHashMap特点:由键决定:有序、不重复、无索引有序指存储和取出的元素顺序一致原理:底层数据结构依旧是哈希表,只是每个键值对元素又额外的多了一个双链表的机制记录存储的顺序四.TreeMap特点:TreeMap跟TreeSet底层原理一样,都是红黑树结构由键决定特性:不重复、无索引、可排序可排序:对键进行排序注:默认按照键的从小到大进行排序,也可以自己规定键的排序规则代码书写两种排序规则:实现Comparable接口,指定比较规则创建集合时传递Comparator比较器对象,指定比较规则五.常见面试题1.TreeMap添加元素时,键是否需要重写hashCode和equals方法不需要重写2.HashMap是哈希表结构的,JDK8开始由数组,链表,红黑树组成,既然有红黑树,HashMap的键是否需要实现重写Compareable接口或者传递比较器对象不需要,在HashMap的底层,默认是利用哈希值的大小关系来创建红黑树的3.TreeMap和HashMap谁的效率更好如果是最坏情况,添加了8个元素,这8个元素形成了链表,此时TreeMap的效率更高,但是这种情况出现几率很小,一般情况下,HashMap的效率更高4.在Map集合中,Java是会否提供一个如果键重复了,不会覆盖的put方法会提供注:代码中的逻辑都有两面性,如果只知道其中的A面,而且代码中还发现了有变量可以控制两面性的发生,那么该逻辑一定会有B面习惯:boolean类型的变量控制,一般只有AB两面,因为boolean只有两个值int类型的变量控制,一般至少有三面,因为int可以取多个值5.三种双列集合如果进行选择默认:HashMap(效率最高)如果要保证存取有序:LinkedHashMap如果要进行排序:TreeMap六.可变参数介绍:可变参数本质上就是一个数组作用:在形参中接受多个数据格式:数据类型...参数名称例:int...a注:1.在方法的形参中最多只能写一个可变参数2.在方法的形参中,如果除了可变参数外,还有其他的形参,那么可变参数需要写在最后七.Collections介绍:java.util.Collections:集合的工具类Collections常见API方法名称说明public static T boolean addAll(CollectionT c, T ... elements)批量添加元素public static void shuffle(List? list)打乱list集合元素的顺序public static T void sort(ListT list)排序public static T void sort(ListT list, ComparatorT c)根据指定的规则进行排序public static T int binarySearch(ListT list, T key)以二分查找法查找元素public static T void copy(ListT dest, ListT src)拷贝集合中的元素public static T int fill(ListT list, T obj)使用指定的元素填充集合public static T void max/min(CollectionT coll)根据默认的自然排序获取最大/小值public static T void swap(List? list , int i, int j)交换集合中指定位置的元素八.不可变集合介绍:集合内容无法被修改应用场景:如果某个数据不能被修改,可以把它防御性的拷贝到不可变集合中当集合对象被不可信的库调用时,不可变形式是安全的创建不可变集合的书写格式在List、Set、Map接口中,都存在静态的of办法,可以获取一个不可变的集合方法名称说明staticE ListE of(E...elements)创建一个具有指定元素的List集合对象staticE SetE of(E...elements)创建一个具有指定元素的Set集合对象staticK,V MapK,V of(E...elements)创建一个具有指定元素的Map集合对象注:这个集合不能添加,不能删除,不能修改创建不可变的Set集合细节:当我们要获取一个不可变的Set集合时,里面的参数一定要保证唯一性创建不可变的Map集合细节:1.键时不能重复的2.Map里面的of方法,参数是有上限的,最多只能传递20个参数,10个键值对3.如果要传递多个键值对对象,数量大于10个,使用Map接口中的ofEntries方法
返回列表