- map集合的特点和遍历方式
- HashMap和hashtable的区别
- map集合字符串出现的次数
- map集合泛型
- 工具类
map集合的特点和遍历方式
1.增删改查
2.键值对形式存在
3.key可以为空
package com.zhulinjun; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class mdemo1 { public static void main(String[] args) { //增删改查 Map<String, Integer> map=new HashMap<>(); //增加 map.put("a", 1); map.put("b", 2); map.put("c", 3); map.put("d", 4); System.out.println(map); //删除 Object remove=map.remove("b"); System.out.println(map);//{a=1, c=3, d=4} //修改 map.put("c", 32); System.out.println(map);//{a=1, c=3, d=4} {a=1, c=32, d=4} //查询 System.out.println(map.get("c")); //查询所有=======遍历方式 //1.拿到map集合中的所有key Set keys=map.keySet(); for (Object key : keys) { System.out.println("键:"+key+";值"+map.get(key)); } //2.拿到映射关系 Set<Entry<String, Integer>> entrySet = map.entrySet(); for (Entry<String, Integer> entry : entrySet) { System.out.println("键:"+entry.getKey()+";值"+entry.getValue()); } } }
HashMap和hashtable的区别
1.hashtable线程是安全的(synchronized)
map集合字符串出现的次数
package com.zhulinjun; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class mdemo2 { public static void main(String[] args) { String s="arghrhtyuyitdghytjtjysfhhghjyjffgnhggjmsakk"; /** * 实现思路: 1.做字符串切割,得到一个字符数组 2.接下来遍历,拿到单个字符 3.如果该字符没有出现过,即value值为null,那么该字符为KEY,值初始化为1 4.如果已经出现过,拿到原来的值+1 debugger的使用,调试代码 1.打断点 2.采用debug的方式运行程序 3.进入调试窗口,左上方有一个step over调试箭头,快捷键F6 4.接下来可以通过F6调试当前程序对应的每一个变量值 */ 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); } } Set<Entry<Character, Integer>> entrySet = map.entrySet(); for (Entry<Character, Integer> entry : entrySet) { System.out.println(entry.getKey()+":" + entry.getValue()); } } }
map集合泛型
1.泛型的作用:之前,不健壮的代码,会在运行时才会把错误暴露出来;之后,将潜在的问题暴露出来,早预防早治疗。将运行期出现的异常转换为编译期的错误。
2.泛型类
3.泛型方法
package com.zhulinjun; import java.util.List; public class mdemo3 { } //创建泛型类 class UserDao extends BaseDao{ } class BaseDao<T>{ void add(T t) {} void del(T t) {} void edit(T t) {} List<T> list(T t){ return null; } } //泛型方法(当类不是泛型类又想添加方法) class Result{ <T>void del(T t){} }
集合框架工具类
package com.zhulinjun; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class mdemo4 { public static void main(String[] args) { // 1.集合之间的互相转换:数组转换成集合,本质上依然是一个数组,长度是不可变的,不可增加元素; // 集合与数组所具备的方法是不一样的,如对数组而言,就有判断内部包含哪个元素; String[] arr= {"a","b","c","d"};//数组转集合 List<String> list = Arrays.asList(arr); // Object[] array = list.toArray(); 集合转数组 } } class mdemo5{ public static void main(String[] args) { // 对于工具类其他方法的应用 List<String> list = new ArrayList<>(); list.add("b"); list.add("c"); list.add("a"); System.out.println(list);//[b, c, a] Collections.sort(list); System.out.println(list);//[a, b, c] //x,y指集合中的元素 Collections.sort(list, (x,y) -> y.compareTo(x)); System.out.println(list);//[c, b, a] System.out.println("=========================================="); List<Per> list1=new ArrayList<>(); list1.add(new Per("b", 16)); list1.add(new Per("c", 18)); list1.add(new Per("a", 19)); System.out.println(list);//[c, b, a] Collections.sort(list); System.out.println(list);//[a, b, c] } } class Per implements Comparable<Person>{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } public Per(String name, int age) { super(); this.name = name; this.age = age; } public Per() { super(); // TODO Auto-generated constructor stub } @Override public int compareTo(Person o) { // TODO Auto-generated method stub return o.getName().compareTo(this.getName()); }