( 1 )Map的特点与遍历:
增删改查 . key可以为空 . 值对形式存在
拿到key,再拿值
拿到映射关系,键值都有了
HashMap与hashtable的区别:
1 . hashtable是线程安全的
2 . jdk1.8以下hashtable的key不能存放null
entySet:keySet:
package com.zhanghao3; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class Map1 { public static void main(String[] args) { // HashMap与Hashtable的区别 Hashtable<String,Integer> table = new Hashtable<>(); table.put("liu", 5); table.put(null, 1); Map<String,Integer> map=new HashMap<>(); //增加 map.put("zhaung",1); // Hashtable<K, V> map.put("liu",2); map.put(null,5); map.put("whi",3); map.put("dyi",4); System.out.println(map); System.out.println("============================================================="); //删除 Object remove = map.remove("liu"); System.out.println(remove); System.out.println(map); System.out.println("============================================================"); //修改 map.put("whi",32); System.out.println(map); System.out.println("============================================================"); //查询单个 System.out.println(map.get("liu")); System.out.println("============================================================"); //查询所以 //1.先拿到map集合中的所以kap值 Set keys = map.keySet(); for (Object key : keys) { System.out.println("键:"+key+"值"+map.get(key)); } System.out.println("==========================================================="); //拿到映射关系 Set<Entry<String, Integer>> entrySet = map.entrySet(); for (Entry<String, Integer> entry : entrySet) { System.out.println("键:"+entry.getKey()+"值:"+entry.getValue()); } } };
( 2 )常用实现类HashMap:
HashMap的用处就是统计字符串与字符出现的次数
2.1步骤:
1.做字符串切割,得到一个字符数组
2.接下来遍历,拿到单个字符
3.如果该字符没有出现过,即value值为null,那么该字符为Key,值初始化为1
4.如果已经出现过,拿到原来的值+1
2.2 debugger的使用:调用代码
1.打断点
2.采用debug的方式运行程序
3.进入调试窗口,左上方有一个step over调试箭头,快捷键F6
4.接下来可以通过F6一步步调试当前程序对应的每个变量值
public static void main(String[] args) { String s="saoifnkaofehnjahinaosihfaqbfia"; char[] arr = s.toCharArray(); Map<Character, Integer> map=new HashMap<>(); for(char c:arr) { Integer value =map.get(c); if (value==null) { map.put(c, 1); }else { map.put(c, value+1); } // System.out.println(value); } Set<Entry<Character,Integer>> entrySet = map.entrySet(); for (Entry<Character, Integer> entry : entrySet) { System.out.println(entry.getKey()+":"+entry.getValue()); } }
( 3 ).泛型
3.1作用:
1.将运行期的出现的异常转换为编译器的错误
2.提高代码的建状性
之前:不会运行的代码,会在运行时才会把错误暴露出来
之后:将潜在的问题暴露出来,早预防早治疗
public static void main(String[] args) { Set<Integer> set=new HashSet<>(); set.add(1); set.add(2); set.add(3); set.add(4); set.add(5); set.add(6); // set.add("zhanghao"); for (Object obj : set) { if(Integer.valueOf(obj.toString())% 2==0); System.out.println(obj); // set.remove(obj); } }
( 4 )集合框架工具类:
集合工具类则是对集合框架进行封装的一类工具类,可以使我们更加方便地操作集合数据。
解释:
- sort:按照元素的自然顺序对指定数组按升序进行排序。
- asList(T… a) :将给定数组转换成一个 List。
- toString :将集合转化成字符串,便于我们在调试时查看集合的内容和结构。
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("b"); list.add("a"); list.add("c"); System.out.println(list); Collections.sort(list); System.out.println(list); }
( 5 )Collections集合工具类
- Collections 是一个操作 Set、List 和 Map 等集合的工具类。Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法
public class Demo4 { // public static void main(String[] args) { // int[] intArr = {3,6,1,8,9,2}; // System.out.println(Arrays.toString(intArr)); // Arrays.sort(intArr);//sort // System.out.println(intArr); // System.out.println(Arrays.toString(intArr));//toString // // List<int[]> asList = Arrays.asList(intArr);//asList // } public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("b"); list.add("a"); list.add("c"); System.out.println(list); Collections.sort(list); System.out.println(list); }