Map集合概述和特点

Map接口概述

  • 将键映射到值得对象
  • 一个映射不能包含重复的键
  • 每个键最多只能映射到一个值

Map接口和Collection接口的不同

  • Map是双列的,Collection是单列的。
  • Map的键唯一,Collection的子体系Set是唯一的。
  • Map集合的数据结构值针对键有效,跟值无关。
  • Collection集合的数据结构是针对元素有效。

Map集合的特点

  • 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

Map集合的功能概述

Map集合的功能概述:
1:添加功能V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲如果键是第一次存储,就直接存储元素,返回null如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
2:删除功能void clear():移除所有的键值对元素V remove(Object key):根据键删除键值对元素,并把值返回
3:判断功能boolean containsKey(Object key):判断集合是否包含指定的键boolean containsValue(Object value):判断集合是否包含指定的值boolean isEmpty():判断集合是否为空
4:获取功能Set<Map.Entry<K,V>> entrySet():???V get(Object key):根据键获取值Set<K> keySet():获取集合中所有键的集合Collection<V> values():获取集合中所有值的集合
5:长度功能int size():返回集合中的键值对的对数
public class MapDemo {public static void main(String[] args) {// 创建集合对象Map<String, String> map = new HashMap<String, String>();// 添加元素// V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲// System.out.println("put:" + map.put("文章", "马伊俐"));// System.out.println("put:" + map.put("文章", "姚笛"));map.put("邓超", "孙俪");map.put("黄晓明", "杨颖");map.put("周杰伦", "蔡依林");map.put("刘恺威", "杨幂");// void clear():移除所有的键值对元素// map.clear();// V remove(Object key):根据键删除键值对元素,并把值返回// System.out.println("remove:" + map.remove("黄晓明"));// System.out.println("remove:" + map.remove("黄晓波"));// boolean containsKey(Object key):判断集合是否包含指定的键// System.out.println("containsKey:" + map.containsKey("黄晓明"));// System.out.println("containsKey:" + map.containsKey("黄晓波"));// boolean isEmpty():判断集合是否为空// System.out.println("isEmpty:"+map.isEmpty());// int size():返回集合中的键值对的对数System.out.println("size:" + map.size());// 输出集合名称System.out.println("map:" + map);}
}

Map集合的获取功能测试

获取功能:V get(Object key):根据键获取值Set<K> keySet():获取集合中所有键的集合Collection<V> values():获取集合中所有值的集合
public class MapDemo2 {public static void main(String[] args) {// 创建集合对象Map<String, String> map = new HashMap<String, String>();// 创建元素并添加元素map.put("邓超", "孙俪");map.put("黄晓明", "杨颖");map.put("周杰伦", "蔡依林");map.put("刘恺威", "杨幂");// V get(Object key):根据键获取值System.out.println("get:" + map.get("周杰伦"));System.out.println("get:" + map.get("周杰")); // 返回nullSystem.out.println("----------------------");// Set<K> keySet():获取集合中所有键的集合Set<String> set = map.keySet();for (String key : set) {System.out.println(key);}System.out.println("----------------------");// Collection<V> values():获取集合中所有值的集合Collection<String> con = map.values();for (String value : con) {System.out.println(value);}}
}

Map集合遍历

  • 方式一:Map集合的遍历之键找值
  • 获取所有键的集合
  • 遍历键的集合,获取到每一个键
  • 根据键找值
/** Map集合的遍历。* Map -- 夫妻对* 思路:* 		A:把所有的丈夫给集中起来。* 		B:遍历丈夫的集合,获取得到每一个丈夫。* 		C:让丈夫去找自己的妻子。* * 转换:* 		A:获取所有的键* 		B:遍历键的集合,获取得到每一个键* 		C:根据键去找值*/
public class MapDemo3 {public static void main(String[] args) {// 创建集合对象Map<String, String> map = new HashMap<String, String>();// 创建元素并添加到集合map.put("杨过", "小龙女");map.put("郭靖", "黄蓉");map.put("杨康", "穆念慈");map.put("陈玄风", "梅超风");// 遍历// 获取所有的键Set<String> set = map.keySet();// 遍历键的集合,获取得到每一个键for (String key : set) {// 根据键去找值String value = map.get(key);System.out.println(key + "---" + value);}}
}
  • 方式二:Map集合的遍历之键值对对象找键和值
  • 获取所有键值对对象的集合
  • .遍历键值对对象的集合,获取到每一个键值对对象
  • 根键值对对象找键和值
/** Map集合的遍历。* Map -- 夫妻对* * 思路:* 		A:获取所有结婚证的集合* 		B:遍历结婚证的集合,得到每一个结婚证* 		C:根据结婚证获取丈夫和妻子* * 转换:* 		A:获取所有键值对对象的集合* 		B:遍历键值对对象的集合,得到每一个键值对对象* 		C:根据键值对对象获取键和值* * 这里面最麻烦的就是键值对对象如何表示呢?* 看看我们开始的一个方法:* 		Set<Map.Entry<K,V>> entrySet():返回的是键值对对象的集合*/
public class MapDemo4 {public static void main(String[] args) {// 创建集合对象Map<String, String> map = new HashMap<String, String>();// 创建元素并添加到集合map.put("杨过", "小龙女");map.put("郭靖", "黄蓉");map.put("杨康", "穆念慈");map.put("陈玄风", "梅超风");// 获取所有键值对对象的集合Set<Map.Entry<String, String>> set = map.entrySet();// 遍历键值对对象的集合,得到每一个键值对对象for (Map.Entry<String, String> me : set) {// 根据键值对对象获取键和值String key = me.getKey();String value = me.getValue();System.out.println(key + "---" + value);}}
}

Map集合遍历的两种方式比较图解

在这里插入图片描述

HashMap集合键是String值是String的案例

/** HashMap:是基于哈希表的Map接口实现。* 哈希表的作用是用来保证键的唯一性的。* * HashMap<String,String>* 键:String* 值:String*/
public class HashMapDemo {public static void main(String[] args) {// 创建集合对象HashMap<String, String> hm = new HashMap<String, String>();// 创建元素并添加元素// String key1 = "it001";// String value1 = "马云";// hm.put(key1, value1);hm.put("it001", "马云");hm.put("it003", "马化腾");hm.put("it004", "乔布斯");hm.put("it005", "张朝阳");hm.put("it002", "裘伯君"); // wpshm.put("it001", "比尔盖茨");// 遍历Set<String> set = hm.keySet();for (String key : set) {String value = hm.get(key);System.out.println(key + "---" + value);}}
}

HashMap集合键是Integer值是String的案例

/** HashMap<Integer,String>* 键:Integer* 值:String*/
public class HashMapDemo2 {public static void main(String[] args) {// 创建集合对象HashMap<Integer, String> hm = new HashMap<Integer, String>();// 创建元素并添加元素// Integer i = new Integer(27);// Integer i = 27;// String s = "林青霞";// hm.put(i, s);hm.put(27, "林青霞");hm.put(30, "风清扬");hm.put(28, "刘意");hm.put(29, "林青霞");// 下面的写法是八进制,但是不能出现8以上的单个数据// hm.put(003, "hello");// hm.put(006, "hello");// hm.put(007, "hello");// hm.put(008, "hello");// 遍历Set<Integer> set = hm.keySet();for (Integer key : set) {String value = hm.get(key);System.out.println(key + "---" + value);}// 下面这种方式仅仅是集合的元素的字符串表示// System.out.println("hm:" + hm);}
}

HashMap集合键是String值是Student的案例

/** HashMap<String,Student>* 键:String	学号* 值:Student 学生对象*/
public class HashMapDemo3 {public static void main(String[] args) {// 创建集合对象HashMap<String, Student> hm = new HashMap<String, Student>();// 创建学生对象Student s1 = new Student("周星驰", 58);Student s2 = new Student("刘德华", 55);Student s3 = new Student("梁朝伟", 54);Student s4 = new Student("刘嘉玲", 50);// 添加元素hm.put("9527", s1);hm.put("9522", s2);hm.put("9524", s3);hm.put("9529", s4);// 遍历Set<String> set = hm.keySet();for (String key : set) {// 注意了:这次值不是字符串了// String value = hm.get(key);Student value = hm.get(key);System.out.println(key + "---" + value.getName() + "---" + value.getAge());}}
}

HashMap集合键是Student值是String的案例

/** HashMap<Student,String>* 键:Student* 		要求:如果两个对象的成员变量值都相同,则为同一个对象。* 值:String*/
public class HashMapDemo4 {public static void main(String[] args) {// 创建集合对象HashMap<Student, String> hm = new HashMap<Student, String>();// 创建学生对象Student s1 = new Student("貂蝉", 27);Student s2 = new Student("王昭君", 30);Student s3 = new Student("西施", 33);Student s4 = new Student("杨玉环", 35);Student s5 = new Student("貂蝉", 27);// 添加元素hm.put(s1, "8888");hm.put(s2, "6666");hm.put(s3, "5555");hm.put(s4, "7777");hm.put(s5, "9999");// 遍历Set<Student> set = hm.keySet();for (Student key : set) {String value = hm.get(key);System.out.println(key.getName() + "---" + key.getAge() + "---" + value);}}
}

LinkedHashMap的概述和使用

/** LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。* 由哈希表保证键的唯一性* 由链表保证键盘的有序(存储和取出的顺序一致)*/
public class LinkedHashMapDemo {public static void main(String[] args) {// 创建集合对象LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>();// 创建并添加元素hm.put("2345", "hello");hm.put("1234", "world");hm.put("3456", "java");hm.put("1234", "javaee");hm.put("3456", "android");// 遍历Set<String> set = hm.keySet();for (String key : set) {String value = hm.get(key);System.out.println(key + "---" + value);}}
}
打印结果
2345---hello
1234---javaee
3456---android

TreeMap集合键是String值是String的案例

/** TreeMap:是基于红黑树的Map接口的实现。*      键是红黑树结构,可以保证键的排序和唯一性* HashMap<String,String>* 键:String* 值:String*/
public class TreeMapDemo {public static void main(String[] args) {// 创建集合对象TreeMap<String, String> tm = new TreeMap<String, String>();// 创建元素并添加元素tm.put("hello", "你好");tm.put("world", "世界");tm.put("java", "爪哇");tm.put("world", "世界2");tm.put("javaee", "爪哇EE");// 遍历集合Set<String> set = tm.keySet();for (String key : set) {String value = tm.get(key);System.out.println(key + "---" + value);}}
}

TreeMap集合键是Student值是String的案例

/** TreeMap<Student,String>* 键:Student* 值:String*/
public class TreeMapDemo2 {public static void main(String[] args) {// 创建集合对象TreeMap<Student, String> tm = new TreeMap<Student, String>(new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {// 主要条件int num = s1.getAge() - s2.getAge();// 次要条件int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;return num2;}});// 创建学生对象Student s1 = new Student("潘安", 30);Student s2 = new Student("柳下惠", 35);Student s3 = new Student("唐伯虎", 33);Student s4 = new Student("燕青", 32);Student s5 = new Student("唐伯虎", 33);// 存储元素tm.put(s1, "宋朝");tm.put(s2, "元朝");tm.put(s3, "明朝");tm.put(s4, "清朝");tm.put(s5, "汉朝");// 遍历Set<Student> set = tm.keySet();for (Student key : set) {String value = tm.get(key);System.out.println(key.getName() + "---" + key.getAge() + "---" + value);}}
}
打印结果
潘安---30---宋朝
燕青---32---清朝
唐伯虎---33---汉朝
柳下惠---35---元朝

Map集合案例

统计字符串中每个字符出现的次数案例图解

在这里插入图片描述

统计字符串中每个字符出现的次数案例代码实现

package cn.itcast_05;import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;/** 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)* * 分析:* 		A:定义一个字符串(可以改进为键盘录入)* 		B:定义一个TreeMap集合* 			键:Character* 			值:Integer* 		C:把字符串转换为字符数组* 		D:遍历字符数组,得到每一个字符* 		E:拿刚才得到的字符作为键到集合中去找值,看返回值* 			是null:说明该键不存在,就把该字符作为键,1作为值存储* 			不是null:说明该键存在,就把值加1,然后重写存储该键和值* 		F:定义字符串缓冲区变量* 		G:遍历集合,得到键和值,进行按照要求拼接* 		H:把字符串缓冲区转换为字符串输出* * 录入:linqingxia* 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)*/
public class TreeMapDemo {public static void main(String[] args) {// 定义一个字符串(可以改进为键盘录入)Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String line = sc.nextLine();// 定义一个TreeMap集合TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();// 把字符串转换为字符数组char[] chs = line.toCharArray();// 遍历字符数组,得到每一个字符for (char ch : chs) {// 拿刚才得到的字符作为键到集合中去找值,看返回值Integer i = tm.get(ch);// 是null:说明该键不存在,就把该字符作为键,1作为值存储if (i == null) {tm.put(ch, 1);} else {// 不是null:说明该键存在,就把值加1,然后重写存储该键和值i++;tm.put(ch, i);}}// 定义字符串缓冲区变量StringBuilder sb = new StringBuilder();// 遍历集合,得到键和值,进行按照要求拼接Set<Character> set = tm.keySet();for (Character key : set) {Integer value = tm.get(key);sb.append(key).append("(").append(value).append(")");}// 把字符串缓冲区转换为字符串输出String result = sb.toString();System.out.println("result:" + result);}
}

HashMap集合嵌套HashMap集合的案例

package cn.itcast_05;import java.util.HashMap;
import java.util.Set;/** HashMap嵌套HashMap* * 传智播客* 		jc	基础班* 				陈玉楼		20* 				高跃		22* 		jy	就业班* 				李杰		21* 				曹石磊		23* * 先存储元素,然后遍历元素*/
public class HashMapDemo2 {public static void main(String[] args) {// 创建集合对象HashMap<String, HashMap<String, Integer>> czbkMap = new HashMap<String, HashMap<String, Integer>>();// 创建基础班集合对象HashMap<String, Integer> jcMap = new HashMap<String, Integer>();// 添加元素jcMap.put("陈玉楼", 20);jcMap.put("高跃", 22);// 把基础班添加到大集合czbkMap.put("jc", jcMap);// 创建就业班集合对象HashMap<String, Integer> jyMap = new HashMap<String, Integer>();// 添加元素jyMap.put("李杰", 21);jyMap.put("曹石磊", 23);// 把基础班添加到大集合czbkMap.put("jy", jyMap);// 遍历集合Set<String> czbkMapSet = czbkMap.keySet();for (String czbkMapKey : czbkMapSet) {System.out.println(czbkMapKey);HashMap<String, Integer> czbkMapValue = czbkMap.get(czbkMapKey);Set<String> czbkMapValueSet = czbkMapValue.keySet();for (String czbkMapValueKey : czbkMapValueSet) {Integer czbkMapValueValue = czbkMapValue.get(czbkMapValueKey);System.out.println("\t" + czbkMapValueKey + "---" + czbkMapValueValue);}}}
}

HashMap集合嵌套ArrayList集合的案例

package cn.itcast_05;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;/**	需求:*		假设HashMap集合的元素是ArrayList。有3个。*		每一个ArrayList集合的值是字符串。*		元素我已经完成,请遍历。*	结果:*		 三国演义*		 	吕布*		 	周瑜*		 笑傲江湖*		 	令狐冲*		 	林平之*		 神雕侠侣*		 	郭靖*		 	杨过  */
public class HashMapIncludeArrayListDemo {public static void main(String[] args) {// 创建集合对象HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();// 创建元素集合1ArrayList<String> array1 = new ArrayList<String>();array1.add("吕布");array1.add("周瑜");hm.put("三国演义", array1);// 创建元素集合2ArrayList<String> array2 = new ArrayList<String>();array2.add("令狐冲");array2.add("林平之");hm.put("笑傲江湖", array2);// 创建元素集合3ArrayList<String> array3 = new ArrayList<String>();array3.add("郭靖");array3.add("杨过");hm.put("神雕侠侣", array3);// 遍历集合Set<String> set = hm.keySet();for (String key : set) {System.out.println(key);ArrayList<String> value = hm.get(key);for (String s : value) {System.out.println("\t" + s);}}}
}

ArrayList集合嵌套HashMap集合的案例

package cn.itcast_05;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;/** ArrayList集合嵌套HashMap集合并遍历。*  需求:*  假设ArrayList集合的元素是HashMap。有3个。*    每一个HashMap集合的键和值都是字符串。*    元素我已经完成,请遍历。*    结果:*    周瑜---小乔*    吕布---貂蝉*    郭靖---黄蓉*    杨过---小龙女*    令狐冲---任盈盈*    林平之---岳灵珊*/
public class ArrayListIncludeHashMapDemo {public static void main(String[] args) {// 创建集合对象ArrayList<HashMap<String, String>> array = new ArrayList<HashMap<String, String>>();// 创建元素1HashMap<String, String> hm1 = new HashMap<String, String>();hm1.put("周瑜", "小乔");hm1.put("吕布", "貂蝉");// 把元素添加到array里面array.add(hm1);// 创建元素1HashMap<String, String> hm2 = new HashMap<String, String>();hm2.put("郭靖", "黄蓉");hm2.put("杨过", "小龙女");// 把元素添加到array里面array.add(hm2);// 创建元素1HashMap<String, String> hm3 = new HashMap<String, String>();hm3.put("令狐冲", "任盈盈");hm3.put("林平之", "岳灵珊");// 把元素添加到array里面array.add(hm3);// 遍历for (HashMap<String, String> hm : array) {Set<String> set = hm.keySet();for (String key : set) {String value = hm.get(key);System.out.println(key + "---" + value);}}}
}

集合多层嵌套的数据分析代及码体现

package cn.itcast_06;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;import cn.itcast_02.Student;/** 为了更符合要求:* 		这次的数据就看成是学生对象。* * 传智播客* 		bj	北京校区* 			jc	基础班* 					林青霞		27* 					风清扬		30* 			jy	就业班	* 					赵雅芝		28* 					武鑫		29* 		sh	上海校区* 			jc	基础班* 					郭美美		20* 					犀利哥		22* 			jy	就业班	* 					罗玉凤		21* 					马征		23* 		gz	广州校区* 			jc	基础班* 					王力宏		30* 					李静磊		32* 			jy	就业班	* 					郎朗		31* 					柳岩		33* 		xa	西安校区* 			jc	基础班* 					范冰冰		27* 					刘意		30* 			jy	就业班	* 					李冰冰		28* 					张志豪		29*/
public class HashMapDemo {public static void main(String[] args) {// 创建大集合HashMap<String, HashMap<String, ArrayList<Student>>> czbkMap = new HashMap<String, HashMap<String, ArrayList<Student>>>();// 北京校区数据HashMap<String, ArrayList<Student>> bjCzbkMap = new HashMap<String, ArrayList<Student>>();ArrayList<Student> array1 = new ArrayList<Student>();Student s1 = new Student("林青霞", 27);Student s2 = new Student("风清扬", 30);array1.add(s1);array1.add(s2);ArrayList<Student> array2 = new ArrayList<Student>();Student s3 = new Student("赵雅芝", 28);Student s4 = new Student("武鑫", 29);array2.add(s3);array2.add(s4);bjCzbkMap.put("基础班", array1);bjCzbkMap.put("就业班", array2);czbkMap.put("北京校区", bjCzbkMap);// 晚上可以自己练习一下// 上海校区数据自己做// 广州校区数据自己做// 西安校区数据HashMap<String, ArrayList<Student>> xaCzbkMap = new HashMap<String, ArrayList<Student>>();ArrayList<Student> array3 = new ArrayList<Student>();Student s5 = new Student("范冰冰", 27);Student s6 = new Student("刘意", 30);array3.add(s5);array3.add(s6);ArrayList<Student> array4 = new ArrayList<Student>();Student s7 = new Student("李冰冰", 28);Student s8 = new Student("张志豪", 29);array4.add(s7);array4.add(s8);xaCzbkMap.put("基础班", array3);xaCzbkMap.put("就业班", array4);czbkMap.put("西安校区", xaCzbkMap);// 遍历集合Set<String> czbkMapSet = czbkMap.keySet();for (String czbkMapKey : czbkMapSet) {System.out.println(czbkMapKey);HashMap<String, ArrayList<Student>> czbkMapValue = czbkMap.get(czbkMapKey);Set<String> czbkMapValueSet = czbkMapValue.keySet();for (String czbkMapValueKey : czbkMapValueSet) {System.out.println("\t" + czbkMapValueKey);ArrayList<Student> czbkMapValueValue = czbkMapValue.get(czbkMapValueKey);for (Student s : czbkMapValueValue) {System.out.println("\t\t" + s.getName() + "---" + s.getAge());}}}}
}

HashMap和Hashtable的区别

/** 1:Hashtable和HashMap的区别?* Hashtable:线程安全,效率低。不允许null键和null值* HashMap:线程不安全,效率高。允许null键和null值* * 2:List,Set,Map等接口是否都继承子Map接口?* List,Set不是继承自Map接口,它们继承自Collection接口* Map接口本身就是一个顶层接口*/
public class HashtableDemo {public static void main(String[] args) {// HashMap<String, String> hm = new HashMap<String, String>();Hashtable<String, String> hm = new Hashtable<String, String>();hm.put("it001", "hello");// hm.put(null, "world"); //NullPointerException// hm.put("java", null); // NullPointerExceptionSystem.out.println(hm);}
}

Collections工具类的概述及常见方法讲解

/** Collections:是针对集合进行操作的工具类,都是静态方法。* * 面试题:* Collection和Collections的区别?* Collection:是单列集合的顶层接口,有子接口List和Set。* Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法* * 要知道的方法* public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。* public static <T> int binarySearch(List<?> list,T key):二分查找* public static <T> T max(Collection<?> coll):最大值* public static void reverse(List<?> list):反转* public static void shuffle(List<?> list):随机置换*/
public class CollectionsDemo {public static void main(String[] args) {// 创建集合对象List<Integer> list = new ArrayList<Integer>();// 添加元素list.add(30);list.add(20);list.add(50);list.add(10);list.add(40);System.out.println("list:" + list);// public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。// Collections.sort(list);// System.out.println("list:" + list);// [10, 20, 30, 40, 50]// public static <T> int binarySearch(List<?> list,T key):二分查找// System.out// .println("binarySearch:" + Collections.binarySearch(list, 30));// System.out.println("binarySearch:"// + Collections.binarySearch(list, 300));// public static <T> T max(Collection<?> coll):最大值// System.out.println("max:"+Collections.max(list));// public static void reverse(List<?> list):反转// Collections.reverse(list);// System.out.println("list:" + list);//public static void shuffle(List<?> list):随机置换Collections.shuffle(list);System.out.println("list:" + list);}
}

ArrayList存储自定义对象并排序案例

package cn.itcast_08;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;import cn.itcast_02.Student;/** Collections可以针对ArrayList存储基本包装类的元素排序,存储自定义对象可不可以排序呢?*/
public class CollectionsDemo {public static void main(String[] args) {// 创建集合对象List<Student> list = new ArrayList<Student>();// 创建学生对象Student s1 = new Student("林青霞", 27);Student s2 = new Student("风清扬", 30);Student s3 = new Student("刘晓曲", 28);Student s4 = new Student("武鑫", 29);Student s5 = new Student("林青霞", 27);// 添加元素对象list.add(s1);list.add(s2);list.add(s3);list.add(s4);list.add(s5);// 排序// 自然排序// Collections.sort(list);// 比较器排序// 如果同时有自然排序和比较器排序,以比较器排序为主Collections.sort(list, new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {int num = s2.getAge() - s1.getAge();int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;return num2;}});// 遍历集合for (Student s : list) {System.out.println(s.getName() + "---" + s.getAge());}}
}

模拟斗地主洗牌和发牌

package cn.itcast_09;import java.util.ArrayList;
import java.util.Collections;/** 模拟斗地主洗牌和发牌* * 分析:* 		A:创建一个牌盒* 		B:装牌* 		C:洗牌* 		D:发牌* 		E:看牌*/
public class PokerDemo {public static void main(String[] args) {// 创建一个牌盒ArrayList<String> array = new ArrayList<String>();// 装牌// 黑桃A,黑桃2,黑桃3,...黑桃K// 红桃A,...// 梅花A,...// 方块A,...// 定义一个花色数组String[] colors = { "♠", "♥", "♣", "♦" };// 定义一个点数数组String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };// 装牌for (String color : colors) {for (String number : numbers) {array.add(color.concat(number));}}array.add("小王");array.add("大王");// 洗牌Collections.shuffle(array);// System.out.println("array:" + array);// 发牌ArrayList<String> fengQingYang = new ArrayList<String>();ArrayList<String> linQingXia = new ArrayList<String>();ArrayList<String> liuYi = new ArrayList<String>();ArrayList<String> diPai = new ArrayList<String>();for (int x = 0; x < array.size(); x++) {if (x >= array.size() - 3) {diPai.add(array.get(x));} else if (x % 3 == 0) {fengQingYang.add(array.get(x));} else if (x % 3 == 1) {linQingXia.add(array.get(x));} else if (x % 3 == 2) {liuYi.add(array.get(x));}}// 看牌lookPoker("风清扬", fengQingYang);lookPoker("林青霞", linQingXia);lookPoker("刘意", liuYi);lookPoker("底牌", diPai);}public static void lookPoker(String name, ArrayList<String> array) {System.out.print(name + "的牌是:");for (String s : array) {System.out.print(s + " ");}System.out.println();}
}

模拟斗地主洗牌和发牌并对牌进行排序的原理图解

在这里插入图片描述

模拟斗地主洗牌和发牌并对牌进行排序的代码实现

package cn.itcast_10;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;/** 思路:* 		A:创建一个HashMap集合* 		B:创建一个ArrayList集合* 		C:创建花色数组和点数数组* 		D:从0开始往HashMap里面存储编号,并存储对应的牌*        同时往ArrayList里面存储编号即可。*      E:洗牌(洗的是编号)*      F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)*      G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)*/
public class PokerDemo {public static void main(String[] args) {// 创建一个HashMap集合HashMap<Integer, String> hm = new HashMap<Integer, String>();// 创建一个ArrayList集合ArrayList<Integer> array = new ArrayList<Integer>();// 创建花色数组和点数数组// 定义一个花色数组String[] colors = { "♠", "♥", "♣", "♦" };// 定义一个点数数组String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2", };// 从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号即可。int index = 0;for (String number : numbers) {for (String color : colors) {String poker = color.concat(number);hm.put(index, poker);array.add(index);index++;}}hm.put(index, "小王");array.add(index);index++;hm.put(index, "大王");array.add(index);// 洗牌(洗的是编号)Collections.shuffle(array);// 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)TreeSet<Integer> fengQingYang = new TreeSet<Integer>();TreeSet<Integer> linQingXia = new TreeSet<Integer>();TreeSet<Integer> liuYi = new TreeSet<Integer>();TreeSet<Integer> diPai = new TreeSet<Integer>();for (int x = 0; x < array.size(); x++) {if (x >= array.size() - 3) {diPai.add(array.get(x));} else if (x % 3 == 0) {fengQingYang.add(array.get(x));} else if (x % 3 == 1) {linQingXia.add(array.get(x));} else if (x % 3 == 2) {liuYi.add(array.get(x));}}// 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)lookPoker("风清扬", fengQingYang, hm);lookPoker("林青霞", linQingXia, hm);lookPoker("刘意", liuYi, hm);lookPoker("底牌", diPai, hm);}// 写看牌的功能public static void lookPoker(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) {System.out.print(name + "的牌是:");for (Integer key : ts) {String value = hm.get(key);System.out.print(value + " ");}System.out.println();}
}

总结

1:Map(掌握)(1)将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 (2)Map和Collection的区别?A:Map 存储的是键值对形式的元素,键唯一,值可以重复。夫妻对B:Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素可重复。光棍(3)Map接口功能概述(自己补齐)A:添加功能B:删除功能C:判断功能D:获取功能E:长度功能(4)Map集合的遍历A:键找值a:获取所有键的集合b:遍历键的集合,得到每一个键c:根据键到集合中去找值B:键值对对象找键和值a:获取所有的键值对对象的集合b:遍历键值对对象的集合,获取每一个键值对对象c:根据键值对对象去获取键和值代码体现:Map<String,String> hm = new HashMap<String,String>();hm.put("it002","hello");hm.put("it003","world");hm.put("it001","java");//方式1 键找值Set<String> set = hm.keySet();for(String key : set) {String value = hm.get(key);System.out.println(key+"---"+value);}//方式2 键值对对象找键和值Set<Map.Entry<String,String>> set2 = hm.entrySet();for(Map.Entry<String,String> me : set2) {String key = me.getKey();String value = me.getValue();System.out.println(key+"---"+value);}(5)HashMap集合的练习A:HashMap<String,String>B:HashMap<Integer,String>C:HashMap<String,Student>D:HashMap<Student,String>(6)TreeMap集合的练习		A:TreeMap<String,String>B:TreeMap<Student,String>(7)案例A:统计一个字符串中每个字符出现的次数B:集合的嵌套遍历a:HashMap嵌套HashMapb:HashMap嵌套ArrayListc:ArrayList嵌套HashMapd:多层嵌套2:Collections(理解)	(1)是针对集合进行操作的工具类(2)面试题:Collection和Collections的区别A:Collection 是单列集合的顶层接口,有两个子接口List和SetB:Collections 是针对集合进行操作的工具类,可以对集合进行排序和查找等(3)常见的几个小方法:A:public static <T> void sort(List<T> list)B:public static <T> int binarySearch(List<?> list,T key)C:public static <T> T max(Collection<?> coll)D:public static void reverse(List<?> list)E:public static void shuffle(List<?> list)(4)案例A:ArrayList集合存储自定义对象的排序B:模拟斗地主洗牌和发牌C:模拟斗地主洗牌和发牌并对牌进行排序

集合的特点和数据结构总结

1:集合(自己补齐)Collection(单列集合)List(有序,可重复)ArrayList底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList底层数据结构是链表,查询慢,增删快线程不安全,效率高Set(无序,唯一)HashSet底层数据结构是哈希表。哈希表依赖两个方法:hashCode()equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是true:说明元素重复,不添加是false:就直接添加到集合否:就直接添加到集合最终:自动生成hashCode()equals()即可LinkedHashSet底层数据结构由链表和哈希表组成。由链表保证元素有序。由哈希表保证元素唯一。TreeSet底层数据结构是红黑树。(是一种自平衡的二叉树)如何保证元素唯一性呢?根据比较的返回值是否是0来决定如何保证元素的排序呢?两种方式自然排序(元素具备比较性)让元素所属的类实现Comparable接口比较器排序(集合具备比较性)让集合接收一个Comparator的实现类对象Map(双列集合)A:Map集合的数据结构仅仅针对键有效,与值无关。B:存储的是键值对形式的元素,键唯一,值可重复。HashMap底层数据结构是哈希表。线程不安全,效率高哈希表依赖两个方法:hashCode()equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是true:说明元素重复,不添加是false:就直接添加到集合否:就直接添加到集合最终:自动生成hashCode()equals()即可LinkedHashMap底层数据结构由链表和哈希表组成。由链表保证元素有序。由哈希表保证元素唯一。Hashtable底层数据结构是哈希表。线程安全,效率低哈希表依赖两个方法:hashCode()equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是true:说明元素重复,不添加是false:就直接添加到集合否:就直接添加到集合最终:自动生成hashCode()equals()即可TreeMap底层数据结构是红黑树。(是一种自平衡的二叉树)如何保证元素唯一性呢?根据比较的返回值是否是0来决定如何保证元素的排序呢?两种方式自然排序(元素具备比较性)让元素所属的类实现Comparable接口比较器排序(集合具备比较性)让集合接收一个Comparator的实现类对象2:到底使用那种集合(自己补齐)看需求。是否是键值对象形式:是:Map键是否需要排序:是:TreeMap否:HashMap不知道,就使用HashMap。否:Collection元素是否唯一:是:Set元素是否需要排序:是:TreeSet否:HashSet不知道,就使用HashSet否:List要安全吗:是:Vector(其实我们也不用它,后面我们讲解了多线程以后,我在给你回顾用谁)否:ArrayList或者LinkedList增删多:LinkedList查询多:ArrayList不知道,就使用ArrayList不知道,就使用ArrayList3:集合的常见方法及遍历方式Collection:add()remove()contains()iterator()size()遍历:增强for迭代器|--Listget()遍历:普通for|--SetMap:put()remove()containskey(),containsValue()keySet()get()value()entrySet()size()遍历:根据键找值根据键值对对象分别找键和值作业:我讲解过的任意一个集合,我要求你存储什么,你就能够存储什么。并且,还要能够遍历出来。4:ArrayList,LinkedList,HashSet,HashMap(掌握)存储字符串和自定义对象数据并遍历5:集合的嵌套遍历(理解)

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. C#excle表操作

    #region Excle的具体运用 /// <summary> /// 读取excel文件 /// </summary> /// <returns></returns> public static string readExcle() {string result = string.Empty;try{string strExcelPath = "D:/临时处理表.xls";DataTable d…...

    2024/4/28 6:17:21
  2. mysql索引篇之覆-索引下推

    文章是学习了林晓斌老师在极客时间的《mysql实战45讲》后,根据自己的理解整理而成的。 CREATE TABLE `user_table` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`username` varchar(255) NOT NULL,`password` varchar(255) DEFAULT NULL,`age` int(11) unsigned Not NULL…...

    2024/4/28 15:42:06
  3. PyTorch中基于TPU的FastAI多类图像分类

    作者|PRUDHVI VARMA 编译|VK 来源|Analytics Indiamag 计算机视觉因其广泛的应用而成为人工智能领域中最具发展趋势的子领域之一。在某些领域,甚至它们在快速准确地识别图像方面超越了人类的智能。 在本文中,我们将演示最流行的计算机视觉应用之一-多类图像分类问题,使用fas…...

    2024/4/28 7:08:12
  4. 51单片机:红外遥控电机发动

    /************************************************************************************** 红外遥控器,控制电机 ****************************************************************************************/#include "reg52.h" //此文件中定义了单片机的一…...

    2024/4/28 3:42:56
  5. 如何实现复杂的问题简单化

    01复杂带来的困扰不得不承认,我是一个喜欢把简单事情想复杂化的人。做事之前想很多后果,与人交往过于注重别人感受,表达混乱,所以,常常踌躇不前,徘徊不定。学习、工作、生活常亮红灯,困扰不断。通过写文章,我渐渐明白,即使几千字的东西,也可以按某种方式排列,变得简…...

    2024/4/28 7:24:30
  6. 开源GUI AWTK 1.5 发布

    ZLG AWTK 1.5 Release Notes 一、介绍 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。欢迎广大开发者一起参与开…...

    2024/4/28 15:29:48
  7. Damaged ceiling detection and localization in large-span structures using convolutionalneuralnetwoks

    题目《Damaged ceiling detection and localization in large-span structures using convolutional neural networks》 Keywords: Damaged ceiling detection Convolutional neural networks Localization Features visualization Saliency map ABSTRACT: 由于人工…...

    2024/4/13 16:19:27
  8. 搭建react开发环境的步骤

    一:安装node可,以在官网或者中文网里面下载,根据自己的电脑选择是32还是64 网址:http://nodejs.cn二:下载并安装好node之后,打开docs管理工具,先看看node安装成功了没有,输入 node -v ,回车,会输出node的版本号,这样就已经是安装成功了,由于在国内使用npm是非常慢的…...

    2024/4/12 3:26:47
  9. 【阶段1】【组合数学】计数交换

    Description【题意】 给定一个 1~n 的排列 p1,p2,…,pn,可进行若干次操作,每次选择两个整数 x,y,交换 px,py。 设把 p1,p2,…,pn 变成单调递增的排列 1,2,…,n 至少需要 m 次交换。 求有多少种操作方法可以只用 m 次交换达到上述目标。 因为结果可能很大,你只需要输出结果对…...

    2024/4/12 3:26:46
  10. java中的输入输出流--字符流

    java中的输入输出流–字符流9.5.常用的字符输入与字符输出流类 1.字符输出流—顶级类Writer public abstract class Writer—不能new 1.1FileWriter — 方便写字符文件 构造方法package com.lx.test1;import java.io.File; import java.io.FileWriter; import java.io.Writer;…...

    2024/4/28 17:38:34
  11. LeetCode刷题系列 -- 17. 电话号码的字母组合

    题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf&…...

    2024/4/28 1:23:17
  12. eclipse离线安装Activiti Designer插件

    今天安装个插件费了半天的劲,特此记录一下。 1.在线安装 按照网上说的,菜单选择Help–Install New Software,点击Add,输入Name:Activiti BPMN 2.0 designer, Location:http://activiti.org/designer/update/ ,基本可以放弃了,提示以下错误:2.离线通过安装包安装 a. 通过…...

    2024/4/12 3:26:43
  13. 算法探索_找不同

    问题描述:给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例:输入: s = "abcd" t = "abcde"输出: e解释: e 是那个被添加的字母。来源:力扣(LeetCode) 链接…...

    2024/4/21 21:58:31
  14. java学习之构造方法与this关键字

    ...

    2024/4/28 7:35:48
  15. 多线程代码练习题

    代码 """ 1、使用多线程在终端中打印“hello,world” + 线程名字.2、使用多线程实现:全局变量 g_num=0,使用一个线程,把g_num的值加10次1,然后主线程等待1秒,另外一个线程把g_num的值加10次13、使用互斥锁完成2个线程对同一个全局变量各加100万次的操作4、编…...

    2024/4/27 22:07:21
  16. jmeter循环发送http请求

    在线程组中添加「逻辑控制器」-----循环控制器 在控制器下新建一个http请求2.设置几分钟后开始发请求 持续更新…...

    2024/4/18 10:21:08
  17. i7-1165G7怎么样

    酷睿i7-1165G7基于英特尔改良的10nm工艺制程,四核心八线程设计,睿频加速高达4.7GHz。虽然核心数量并不多,但是英特尔大幅提升了这一代处理器的单核心性能,表现还是相当令人期待的。 我的笔记本电脑就是活动时8折抢购的 https://list.jd.com/list.html? 据爆料 宏碁新款 As…...

    2024/4/10 10:59:25
  18. 习题10-2 递归求阶乘和

    本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+…+n! 的值。 函数接口定义: double fact( int n ); double factsum( int n );函数fact应返回n的阶乘,建议用递归实现。函数factsum应返回 1!+2!+…+n! 的值。题目保证输入输出在双精度范围内。 裁判测…...

    2024/4/10 10:59:24
  19. django中的model模块的父类common

    在项目目录下建一个python包common,别忘了注册: from django.db import modelsclass BaseManager(models.Manager):def get_queryset(self):return super().get_queryset().filter(is_delete=True)class BaseModel(models.Model):is_delete = models.BooleanField(default=Fa…...

    2024/4/10 10:59:23
  20. 等差数列(第十届蓝桥杯省赛C++B组)

    数学老师给小明出了一道等差数列求和的题目。 但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。 现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项? 输入格式 输入的第一行包含一个整数 N。 第二行包含 N 个整数 A1,A2,⋅⋅⋅,AN。(注意 A1∼A…...

    2024/4/27 12:02:53

最新文章

  1. 计算机服务器中了helper勒索病毒怎么办,helper勒索病毒解密流程工具

    在网络技术飞速发展的今天&#xff0c;越来越多的企业离不开网络&#xff0c;网络可以为企业带来更高的生产效率&#xff0c;提供更多的便捷服务&#xff0c;但网络是一把双刃剑&#xff0c;在为人们提供便利的同时&#xff0c;也为企业的数据安全带来严重威胁。近日&#xff0…...

    2024/4/28 19:19:13
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. WKWebView的使用

    一、简介 在iOS中&#xff0c;WKWebView是WebKit框架提供的一个用于展示网页内容的控件&#xff0c;相比UIWebView有更好的性能和功能。 以下是在iOS中使用WKWebView的基本步骤&#xff1a; 1.1 导入WebKit框架 import WebKit1.2 创建WKWebView实例 let webView WKWebVie…...

    2024/4/26 8:35:06
  4. c# wpf XmlDataProvider 简单试验

    1.概要 2.代码 <Window x:Class"WpfApp2.Window12"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend…...

    2024/4/24 22:38:05
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/28 4:04:40
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/28 12:01:04
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/28 16:34:55
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/4/28 18:31:47
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/28 12:01:03
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/28 12:01:03
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/4/28 12:01:03
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/28 16:07:14
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/4/27 21:08:20
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/28 9:00:42
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/27 18:40:35
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/4/28 4:14:21
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/27 13:52:15
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/27 13:38:13
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/4/28 12:00:58
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/4/28 12:00:58
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/27 22:51:49
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/28 7:31:46
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/4/28 8:32:05
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/27 20:28:35
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57