JAVA学习第四次记录

1 May集合

特点
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
3.Map集合中的元素,key是不允许重复的,value是可以重复的
4.Map集合中的元素,key和value是一一对应
常用方法

  1. public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
    String v = map.put(key, value) : 返回值v
    存储 键值对 的时候,key不重复,返回值v是null;key重复,会使用新的value替换map中重复的value,返回被替换的value值。
  2. public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
    返回值: key存在,v返回被删除的值;key不存在,v返回null
  3. public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
  4. boolean containsKey(Object key) 判断集合中是否包含指定的键。
  5. public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。
    Map集合的第一种遍历方式:通过键找值的方式:
for(String key : map.keySet()){
    Integer value = map.get(key);
    System.out.println(key+"="+value);
}
  1. public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)
    May.Entry<K,V>:在May接口中有一个内部接口Entry,Entry将键值对的对应关系封装成了对象。
    Entry表示了一对键和值,提供了获取对应键和对应值得方法:
  • public K getKey():获取Entry对象中的键;
  • public V getValue():获取Entry对象中的值。
    遍历键值对
    Map集合遍历的第二种方式:使用Entry对象遍历:
Set<Map.Entry<String, Integer>> set = map.entrySet();
for(Map.Entry<String,Integer> entry:set){
	String key = entry.getKey();
	Integer value = entry.getValue();
	System.out.println(key+"="+value);
}

1.1HashMapjava.util.HashMap<k,v>集合 implements Map<k,v>接口
特点:
1.HashMap集合底层是哈希表:查询的速度特别的快
JDK1.8之前:数组+单向链表
JDK1.8之后:数组+单向链表|红黑树(链表的长度超过8):提高查询的速度
2.hashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致

使用:
HashMap存储自定义类型键值
Map集合保证key是唯一的: 作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一

1.2LinkedHashMap
java.util.LinkedHashMap<K,V> entends HashMap<K,V>
HashMap下面的一个子类
特点:
1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的

1.3 Hashtable
java.util.Hashtable<K,V>集合 implements Map<K,V>接口
Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快
HashMap集合:可以存储null值,null键
Hashtable集合:不能存储null值,null键
Hashtable和Vector集合一样,在jdk1.2版本之后被更先进的集(HashMap,ArrayList)取代了
Hashtable的子类Properties依然活跃在历史舞台:Properties集合是一个唯一和IO流相结合的集合

2 JDK9的新特性

static <E> List<E> of​(E... elements):
方法of,可以给集合一次性添加多个元素
注意:

  1. of()方法只是Map,List,Set这三个接口的静态方法,其父类接口和子类实现并没有这类方法,比如 HashSet,ArrayList等待;
  2. of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
  3. Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常

3 Debug追踪

使用IDEA的断点调试功能,查看程序的运行过程
可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug

使用方式:
在行号的右边,鼠标左键单击,添加断点(每个方法的第一行,哪里有bug添加到哪里)
右键,选择Debug执行程序
程序就会停留在添加的第一个断点处

执行程序:
f8:逐行执行程序
f7:进入到方法中
shift+f8:跳出方法
f9:跳到下一个断点,如果没有下一个断点,那么就结束程序
ctrl+f2:退出debug模式,停止程序
Console:切换到控制台

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页