发表于: 2019-11-16 21:59:45
1 1207
准备收尾任务一
暂时没遇到什么问题
明天的计划 把任务一遗留问题解决进入任务二
收获:复习基础知识集合框架 Map 面试常问的知识点
图解
* int size():返回集合中的键值对的个数
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class Demo1_Map {
public static void main(String[] args) {
//demo1();//添加数据
//demo2();//删除数据,判断是否包含键或者值
demo3();//获取map中的所有的值
}
private static void demo3() {
Map<String, Integer> map = new HashMap<>();
map.put("张三", 23);
map.put("李四", 24);
map.put("王五", 25);
map.put("赵六", 26);
Collection<Integer> c = map.values();
System.out.println(c);
System.out.println(map.size());
}
public static void demo2() {
Map<String, Integer> map = new HashMap<>();
map.put("张三", 23);
map.put("李四", 24);
map.put("王五", 25);
map.put("赵六", 26);
//Integer value = map.remove("张三"); //根据键删除元素,返回键对应的值
//System.out.println(value);
System.out.println(map.containsKey("张三")); //判断是否包含传入的键
System.out.println(map.containsValue(100)); //判断是否包含传入的值
System.out.println(map);
}
public static void demo1() {
Map<String, Integer> map = new HashMap<>();
Integer i1 = map.put("张三", 23);//存入的过程先判断有没有"张三",没有就添加,有就覆盖,返回的是被覆盖的部分
Integer i2= map.put("李四", 24);
Integer i3 = map.put("王五", 25);
Integer i4 = map.put("赵六", 26);
Integer i5 = map.put("张三", 26); //相同的键不存储,值覆盖,把被覆盖的值返回
System.out.println(map);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out.println(i5);
}
}
* A:键找值思路:* 获取所有键的集合* 遍历键的集合,获取到每一个键* 根据键找值
图解:
public class Demo2_Iterator {
/**
* 通过查看Map集合的api发现没有iterator方法,那么双列集合如何迭代呢?
* 根据键获取值
*/
public static void main(String[] args) {
//demo1();//使用keySet方法,通过获取所有的键的集合,在遍历此集合,根据键再获取其对应的值
demo2();
}
private static void demo1() {
Map<String, Integer> map = new HashMap<>();
map.put("张三", 23);
map.put("李四", 24);
map.put("王五", 25);
map.put("赵六", 26);
// Integer i = map.get("张三"); //根据键获取值
// System.out.println(i);
//获取所有的键
Set<String> keySet = map.keySet(); //获取所有键的集合
Iterator<String> it = keySet.iterator(); //获取迭代器
while(it.hasNext()) { //判断集合中是否有元素
String key = it.next(); //获取每一个键
Integer value = map.get(key); //根据键获取值
System.out.println(key + "=" + value);
}
}
//使用增强for循环
private static void demo2() {
Map<String, Integer> map = new HashMap<>();
map.put("张三", 23);
map.put("李四", 24);
map.put("王五", 25);
map.put("赵六", 26);
//使用增强for循环遍历
for(String key : map.keySet()) { //map.keySet()是所有键的集合
System.out.println(key + "=" + map.get(key));
}
}
}
* A:键值对对象找键和值思路:* 获取所有键值对对象的集合* 遍历键值对对象的集合,获取到每一个键值对对象* 根据键值对对象找键和值* B:案例演示* C:源码分析
* TreeMap集合键是Student值是String的案例(按照年龄排序,年龄相等按照姓名排序HashMap和Hashtable的区别* Hashtable是JDK1.0版本出现的,是线程安全的,效率低,HashMap是JDK1.2版本出现的,是线程不安全的,效率高* Hashtable不可以存储null键和null值,HashMap可以存储null键和null值总结:/*** Collection* List(存取有序,有索引,可以重复)* ArrayList* 底层是数组实现的,线程不安全,查找和修改快,增和删比较慢* LinkedList* 底层是链表实现的,线程不安全,增和删比较快,查找和修改比较慢* Vector* 底层是数组实现的,线程安全的,无论增删改查都慢* 如果查找和修改多,用ArrayList* 如果增和删多,用LinkedList* 如果都多,用ArrayList* Set(存取无序,无索引,不可以重复)* HashSet* 底层是哈希算法实现* LinkedHashSet* 底层是链表实现,但是也是可以保证元素唯一,和HashSet原理一样* TreeSet* 底层是二叉树算法实现* 一般在开发的时候不需要对存储的元素排序,所以在开发的时候大多用HashSet,HashSet的效率比较高* TreeSet在面试的时候比较多,问你有几种排序方式,和几种排序方式的区别* Map* HashMap* 底层是哈希算法,针对键* LinkedHashMap* 底层是链表,针对键* TreeMap* 底层是二叉树算法,针对键* 开发中用HashMap比较多*/
评论