一.map集合相关知识
1.集合最基本:增加,删除,修改,查看
package com.lz.map; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class demo1 { @SuppressWarnings("unchecked") public static void main(String[] args) { @SuppressWarnings("rawtypes") Map<String,String> map=new HashMap<>(); //增加 map.put("name", "圣诞节"); map.put("age", "1"); map.put("info", "士大夫"); map.put("n", "圣诞节"); //增加打印 查看所有 System.out.println(map); //查看一个 System.out.println(map.get("n")); //删除 Object remove = map.remove("n"); System.out.println("数据删除了:"+remove);//删除的数据 //删除打印 System.out.println(map); //修改 就是增加在原来的基础上将增加的值赋值到原来的基础上 map.put("age", "123"); System.out.println(map); /** * 注意在map 集合中如果没有指定泛型 设置values值时如果时数字 ""可有可无! */ } }
效果图:
2特点:是以键值对的形式存储数据 ,
没有继承connection接口所以遍历方法没有迭代器,没有下标也就时没有foreach forei
只能通过: ketset方法 entryset(映射)进行遍历
2.1ketset方法遍历
Set keySet = map.keySet(); for (Object object : keySet) { System.out.println("键:"+object+"值:"+map.get(object)); }
效果图:
2.2entryset(映射)
//映射 entryset Set<Entry<String, String>> entrySet = map.entrySet(); for (Entry<String, String> entry : entrySet) { System.out.println("键:"+entry.getKey()+"值:"+entry.getValue()); }
效果图:
二. 统计某个对象的出现次数
1.思路: a.字符串切割 b.遍历数组,拿到单个 c.如果此字符串没有出现过,及value值为null,key默认值为1, 如果有了则key+1!
package com.lz.map; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class demo2 { public static void main(String[] args) { String str = "asdijfdsdifvhsdovpsasdjz"; // 字符串变成数组 char[] cs = str.toCharArray(); // 定义map集合来接受 数组内容 Map<Character, Integer> map = new HashMap<>(); for (char c : cs) { 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()); } } }
效果图:
三.泛型
1.为什么要使用泛型?
没有泛型:不健壮代码(编码没有问题,但是可能由于在多人所有是会出现错误)在运行是才会被错误暴露出来
泛型:将潜在问题暴露出来,早预防早解决(将运行期出现异常转成编码问题)
当然:也是为了在 实现通用的dao方法 (增加,删除,修改,查看)
package com.lz.map; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @SuppressWarnings("unused") public class demo3 { @SuppressWarnings({ "rawtypes", "unchecked" }) public static void main(String[] args) { Set set = new HashSet<>(); set.add(1); set.add(2); set.add(3); set.add(4); for (Object object : set) { if (Integer.valueOf(object.toString()) %2==0) { System.out.println(object); } } } } //举例子 类 //普通 class UserDao extends BaseDao{ // add(user user); // del(user user); // xg(user user); // ack(user user); // // } //泛型 class BaseDao<T>{ void add(T t) {} void del(T t){} void xg(T t) {} List<T> list(T t){ return null; } } //方法 class result { <T> void del(T t) { } }
四. 集合之间相互转化 排序 :sort tostring
1.集合之间相互转化
package com.lz.map; import java.util.Arrays; import java.util.List; public class demo4 { public static void main(String[] args) { /** * 集合之间相互转化 * */ String [] arr= {"x","e","q"}; //数组变成集合 List<String> list = Arrays.asList(arr); list.add("f"); //集合变成数组 Object[] array = list.toArray(); System.out.println(Arrays.toString(array)); System.out.println(list); } }
效果图:
注意:会出现这样一个错误:ava.lang.UnsupportedOperationException
为什么?即使数组被更换成为集合,它的底层还是本质数组(数组长度不可变),所以添加不成功
那所有更换就是为了更好的操作数据所有要注释add
注释后效果图:
2.排序 :sort tostring
package com.lz.map; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class demo5 { public static void main(String[] args) { //sort ava.util List<String>list=new ArrayList<String>(); list.add("q"); list.add("d"); list.add("f"); System.out.println("没有排序"+list); Collections.sort(list); System.out.println("排序后"+list); // x y集合中的元素 Collections.sort(list, (x,y) -> y.compareTo(x)); System.out.println("倒序"+list); String [] arr= {"x","e","q"}; //数组变成集合 List<String> lists = Arrays.asList(arr); // list.add("f"); // tostring System.out.println(Arrays.toString(array)); } }
效果图: