当前位置: 首页 > wzjs >正文

推荐个网站好吗山东今日热搜

推荐个网站好吗,山东今日热搜,免费网站建站申请,免费咨询网站学习目标 能够说出Map集合特点1.Map集合是一个双列集合,每个元素包含两个值,一个key一个value2.Map集合中的key是不允许重复的,value可以重复3.map集合中一个key只能对应一个value值4.Map集合中key和value数据类型是可以相同的,也可以不同 使用Map集合添加方法保存数据V put(K…

学习目标

能够说出Map集合特点1.Map集合是一个双列集合,每个元素包含两个值,一个key一个value2.Map集合中的key是不允许重复的,value可以重复3.map集合中一个key只能对应一个value值4.Map集合中key和value数据类型是可以相同的,也可以不同
使用Map集合添加方法保存数据V put(K key, V value)  把指定的键与值添加到Map集合中返回值:V()key不重复,返回值就是nullkey重复,会使用新的value,替换之前的value,返回的就是被替换的value值Map<String,String> map = new HashMap<>();map.put("黄晓明", "杨颖"); //v=nullmap.put("黄晓明", "赵薇"); //v=杨颖map.put("冷锋","龙小云");map.put("杨过","小龙女");	
使用”键找值”的方式遍历Map集合1.使用Map集合中的方法keySet,把所有的key取出来,存储到一个Set集合中2.遍历Set集合,获取到Map集合中的每一个key3.使用Map集合中的方法get,根据key找到valueSet<String> set = map.keySet();for (String key : set) {Integer value = map.get(key);System.out.println(key+"\t"+value);}
使用”键值对”的方式遍历Map集合1.使用Map集合中的方法entrySet,获取Map集合中的所有Entry对象,存储到一个Set集合中2.遍历Set集合,获取每一个Entry对象3.使用Entry对象中的方法getKey和getValue获取键与值Set<Map.Entry<String, String>> set = map.entrySet();for (Map.Entry<String, String> entry : set) {String key = entry.getKey();String value = entry.getValue();System.out.println(key+"\t"+value);}
能够使用HashMap存储自定义键值对的数据自定义类型(Person,Student)作为key:保证同名同年龄的人视为同一个人,需要重写hashCode和equals方法HashMap<String,Person> 不需要重写hashCode和equals方法,值是可以重复的HashMap<Person,String> 需要重写hashCode和equals方法,key是不允许重复的
能够完成斗地主洗牌发牌案例1.准备牌2.洗牌3.发牌4.排序5.看牌
能够完成冒泡排序使用数组中相邻元素,依次比较,每次选出最大的元素

第一章 Map集合

1.Map集合的概述

java.util.Map<k,v>:接口  key:键 value:值
特点:1.Map集合是一个双列集合,每个元素包含两个值,一个key一个value2.Map集合中的key是不允许重复的,value可以重复3.Map集合中一个key只能对应一个value4.Map集合中key和value数据类型可以是相同的,也可以是不同

请添加图片描述

2.Map集合常用的子类

1.java.util.HashMap<K,V>集合 implements Map<K,V>接口基于哈希表的 Map 接口的实现。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。a.HashMap集合底层是一个哈希表结构和HashSet是一样b.是一个无序集合
2.java.util.LinkedHashMap<K,V>集合 extends HashMap<K,V>集合Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。a.LinkedHashMap集合底层是哈希表+单向链表和LinkedHashSet是一样b.是一个有序的集合
3.java.util.TreeMap<K,V>集合 implements Map<K,V>接口基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。a.TreeMap底层是一个红黑树结构b.TreeMap集合自带了一个比较器,里边存储的key是有序的:默认是升序或者可以根据比较器自定义排序规则和TreeSet是一样

3.Map的常用方法(重点)

package com.itheima.demo01Map;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;/*Map接口中的常用方法V put(K key, V value)  把指定的键与值添加到Map集合中V remove(Object key)  根据指定的键,删除键值对,返回被删除的值V get(Object key)  根据key获取value值boolean containsKey(Object key) 判断集合中是否包含指定的key*/
public class Demo01Map {public static void main(String[] args) {show05();}/*Collection<V> values() 获取Map集合中所有的value值,把value值存储到一个Collection集合中*/private static void show05() {Map<String,Integer> map = new HashMap<>();map.put("迪丽热巴",168);map.put("古力娜扎",165);map.put("冯提莫",150);map.put("林志玲",178);Collection<Integer> coll = map.values();System.out.println(coll);//[178, 168, 150, 165]}/*boolean containsKey(Object key) 判断集合中是否包含指定的keyboolean containsValue(Object value)  判断集合中是否包含指定的value*/private static void show04() {Map<String,Integer> map = new HashMap<>();map.put("迪丽热巴",168);map.put("古力娜扎",165);map.put("冯提莫",150);map.put("林志玲",178);boolean b1 = map.containsKey("冯提莫");System.out.println("b1:"+b1);//b1:trueboolean b2 = map.containsKey("赵丽颖");System.out.println("b2:"+b2);//b2:falseSystem.out.println(map.containsValue(150));//trueSystem.out.println(map.containsValue(188));//false}/*V get(Object key)  根据key获取value值返回值:V(值)key存在:返回对应的value值key不存在:返回null*/private static void show03() {Map<String,Integer> map = new HashMap<>();map.put("迪丽热巴",168);map.put("古力娜扎",165);map.put("冯提莫",150);map.put("林志玲",178);Integer v1 = map.get("迪丽热巴");System.out.println("v1:"+v1);//v1:168//int v2 = map.get("林志颖");//NullPointerException 自动拆箱Integer v2 = map.get("林志颖");System.out.println("v2:"+v2);//v2:null}/*V remove(Object key)  根据指定的键,删除键值对,返回被删除的值返回值:V(值)key存在:删除对应的键值对,返回被删除键值对中的值key不存在:对集合没有影响,返回null*/private static void show02() {Map<String,Integer> map = new HashMap<>();map.put("迪丽热巴",168);map.put("古力娜扎",165);map.put("冯提莫",150);map.put("林志玲",178);System.out.println(map);//{林志玲=178, 迪丽热巴=168, 冯提莫=150, 古力娜扎=165}Integer v1 = map.remove("林志玲");System.out.println("v1:"+v1);//v1:178System.out.println(map);//{ 迪丽热巴=168, 冯提莫=150, 古力娜扎=165}Integer v2 = map.remove("马尔扎哈");System.out.println("v2:"+v2);//v2:nullSystem.out.println(map);//{ 迪丽热巴=168, 冯提莫=150, 古力娜扎=165}}/*V put(K key, V value)  把指定的键与值添加到Map集合中返回值:V(值)添加元素的时候,key不重复,返回值V就是null添加元素的时候,key重复,会使用新的value,替换之前的value,返回的值V就是被替换的value*/private static void show01() {//创建Map集合对象,泛型使用<String,String>Map<String,String> map = new HashMap<>();String v1 = map.put("黄晓明", "杨颖");System.out.println("v1:"+v1);//v1:nullSystem.out.println(map);//{黄晓明=杨颖}String v2 = map.put("黄晓明", "赵薇");System.out.println("v2:"+v2);//v2:杨颖System.out.println(map);//{黄晓明=赵薇}map.put("冷锋","龙小云");map.put("杨过","小龙女");map.put("郭靖","黄蓉");map.put("尹志平","小龙女");System.out.println(map);//{杨过=小龙女, 尹志平=小龙女, 郭靖=黄蓉, 冷锋=龙小云, 黄晓明=赵薇}}
}

4.Map集合的遍历(重点)

1).键找值的方式

概述

请添加图片描述

代码实现
package com.itheima.demo01Map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;/*Map集合的遍历_键找值方式使用到的方法:Set<K> keySet()  把所有的key取出来,存储到一个Set集合中V get(Object key)  根据key获取value值实现步骤:1.使用Map集合中的方法keySet,把所有的key取出来,存储到一个Set集合中2.遍历Set集合,获取Map集合中的每一个key3.使用Map集合中的方法get,根据key获取value值*/
public class Demo02Map {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();map.put("迪丽热巴",168);map.put("古力娜扎",165);map.put("冯提莫",150);map.put("林志玲",178);//1.使用Map集合中的方法keySet,把所有的key取出来,存储到一个Set集合中Set<String> set = map.keySet();//2.遍历Set集合,获取Map集合中的每一个key//使用迭代器遍历Set集合Iterator<String> it = set.iterator();while (it.hasNext()){String key = it.next();//3.使用Map集合中的方法get,根据key获取value值Integer value = map.get(key);System.out.println(key+"="+value);}System.out.println("-------------------------");//使用增强for循环遍历Set集合for (String key : set) {//3.使用Map集合中的方法get,根据key获取value值Integer value = map.get(key);System.out.println(key+"="+value);}}
}

2).键值对方式

概述

请添加图片描述

代码实现
package com.itheima.demo01Map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;/*Map集合的遍历_键值对方式使用Map集合中的方法:Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。Entry接口中的方法:K getKey() 返回与此项对应的键。V getValue() 返回与此项对应的值。实现步骤:1.使用Map集合中的方法entrySet,获取Map集合中所有的Entry对象,存储到一个Set集合中2.遍历Set集合,获取每一个Entry对象3.使用Entry对象中的方法getKey和getValue获取键与值*/
public class Demo03Map {public static void main(String[] args) {Map<String,String> map = new HashMap<>();map.put("郭靖","黄蓉");map.put("杨过","小龙女");map.put("张无忌","赵敏");//1.使用Map集合中的方法entrySet,获取Map集合中所有的Entry对象,存储到一个Set集合中//成员内部类:外部类名.内部类名  Map.EntrySet<Map.Entry<String, String>> entrySet = map.entrySet();//2.遍历Set集合,获取每一个Entry对象//使用迭代器遍历Set集合Iterator<Map.Entry<String, String>> it = entrySet.iterator();while (it.hasNext()){Map.Entry<String, String> entry = it.next();//3.使用Entry对象中的方法getKey和getValue获取键与值String key = entry.getKey();String value = entry.getValue();System.out.println(key+"="+value);}System.out.println("----------------------------");//使用增强for循环遍历Set集合  集合名.forfor (Map.Entry<String, String> entry : entrySet) {//3.使用Entry对象中的方法getKey和getValue获取键与值String key = entry.getKey();String value = entry.getValue();System.out.println(key+"="+value);}}
}

5.HashMap存储自定义类型(重点)

package com.itheima.demo01Map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*HashMap存储自定义类型(重点)*/
public class Demo04HashMapSaveStudent {public static void main(String[] args) {show02();}/*HashMap存储自定义类型(重点)key:Student类型保证同名同年龄的学生,视为同一个学生,只能存储一次作为key的元素Student必须重写hashCode和equals方法,保证key唯一value:String类型可以重复*/private static void show02() {//创建HashMap集合对象HashMap<Student,String> map = new HashMap<>();//往集合中添加键值对map.put(new Student("张三",18),"中国");map.put(new Student("女王",18),"英国");map.put(new Student("李四",2),"朝鲜");map.put(new Student("王五",38),"俄罗斯");map.put(new Student("女王",18),"毛里求斯");//使用entrySet方法+增强for循环遍历Map集合//1.使用Map集合中的方法entrySet,获取Map集合中所有entry对象,存储到一个Set集合中Set<Map.Entry<Student, String>> set = map.entrySet();//2.遍历Set集合,获取每一个Entry对象for (Map.Entry<Student, String> entry : set) {//3.使用Entry对象中的方法getkey和getValue,分别获取键与值Student key = entry.getKey();String value = entry.getValue();System.out.println(key+"-->"+value);}System.out.println(map.size());//4}/*HashMap存储自定义类型(重点)key: String类型key是唯一,不重复:String类重写了hashCode和equals方法,所以可以保证唯一value:Student类型value是可以重复的*/private static void show01() {//创建HashMap集合对象HashMap<String,Student> map = new HashMap<>();//往集合中存储键值对map.put("中国",new Student("张三",18));map.put("美国",new Student("李四",75));map.put("俄罗斯",new Student("王五",30));map.put("朝鲜",new Student("三胖",1));map.put("美国",new Student("公主",18));//使用keySet方法+增强for循环遍历Map集合//1.使用Map集合中的方法keySet,取出所有的key,存储到一个Set集合中Set<String> set = map.keySet();//2.遍历Set集合,获取每一个keyfor (String key : set) {//3.根据key获取valueStudent value = map.get(key);System.out.println(key+"--->"+value);}}
}
package com.itheima.demo01Map;/*思考:自定义类型,什么时候重写hashCode和equals方法使用HashSet集合存储自定义类型使用HashMap集合,key使用自定义类型的时候(key不重复)*/
public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;if (age != student.age) return false;return name != null ? name.equals(student.name) : student.name == null;}@Overridepublic int hashCode() {int result = name != null ? name.hashCode() : 0;result = 31 * result + age;return result;}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;}
}

6.LinkedHashMap集合(了解)

package com.itheima.demo01Map;import java.util.HashMap;
import java.util.LinkedHashMap;/*java.util.LinkedHashMap<K,V>集合 extends HashMap<K,V>集合Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。LinkedHashMap特点:a.LinkedHashMap集合底层是哈希表+单向链表和LinkedHashSet是一样b.是一个有序的集合*/
public class Demo05LinkedHashMap {public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("aaa","111");map.put("bbb","222");map.put("ccc","333");map.put("aaa","444");map.put("ddd","555");System.out.println(map);//{aaa=444, ccc=333, bbb=222, ddd=555} key不允许重复,是一个无序的集合LinkedHashMap<String,String> linked = new LinkedHashMap<>();linked.put("aaa","111");linked.put("bbb","222");linked.put("ccc","333");linked.put("aaa","444");linked.put("ddd","555");System.out.println(linked);//{aaa=444, bbb=222, ccc=333, ddd=555} key不允许重复,是一个有序的集合}
}

7.TreeMap集合(使用)

package com.itheima.demo01Map;import java.util.Comparator;
import java.util.TreeMap;/*java.util.TreeMap<K,V>集合 implements Map<K,V>接口基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。TreeMap集合的特点:a.TreeMap底层是一个红黑树结构b.TreeMap集合自带了一个比较器,里边存储的key是有序的:默认是升序或者可以根据比较器自定义排序规则和TreeSet是一样构造方法:TreeMap() 使用键的自然顺序构造一个新的、空的树映射。TreeMap(Comparator<? super K> comparator) 构造一个新的、空的树映射,该映射根据给定比较器进行排序。*/
public class Demo06TreeMap {public static void main(String[] args) {TreeMap<Integer,String> map = new TreeMap<>();map.put(1,"a");map.put(3,"b");map.put(2,"c");map.put(5,"d");map.put(4,"e");map.put(1,"w");System.out.println(map);//{1=w, 2=c, 3=b, 4=e, 5=d} 根据key默认升序排序TreeMap<Integer,String> map2 = new TreeMap<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {//根据key降序排序 o2-o1  升序:o1-o2return o2-o1;}});map2.put(1,"a");map2.put(3,"b");map2.put(2,"c");map2.put(5,"d");map2.put(4,"e");map2.put(1,"w");System.out.println(map2);//{5=d, 4=e, 3=b, 2=c, 1=w} key按照比较器规则排序}
}

8.Hashtable集合(了解–>面试)

package com.itheima.demo01Map;import java.util.HashMap;
import java.util.Hashtable;/*Hashtable集合(了解-->面试)java.util.Hashtable<K,V>集合 implements Map<K,V>接口此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。--------------------------------------------------HashMap集合的特点:1.HashMap集合底层是一个哈希表2.HashMap集合是jdk1.2版本之后出现的3.HashMap集合运行存储null值和null键4.HashMap集合是不同步的,效率高(多线程不安全)Hashtable集合的特点:1.Hashtable集合底层是一个哈希表2.Hashtable集合是jdk1.0时期出现的双列集合(最早期)3.Hashtable集合不允许存储null值和null键4.Hashtable集合是同步的,效率低(多线程安全)-----------------------------------------------------Hashtable集合效率没有HashMap高,所以已经被淘汰了但是Hashtable集合的子类Properties集合依然活跃在历史的舞台*/
public class Demo07Hashtable {public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("a",null);map.put(null,"b");map.put(null,null);System.out.println(map);//有几对元素 {null=null, a=null}Hashtable<String,String> table = new Hashtable<>();//table.put("a",null);//NullPointerException//table.put(null,"b");//NullPointerExceptiontable.put(null,null);//NullPointerException}
}

9.Map集合的练习

需求:

​ 输入一个字符串,统计字符串中每个字符出现次数

分析:

请添加图片描述

代码实现:

package com.itheima.demo01Map;import java.util.HashMap;
import java.util.Scanner;/*需求:输入一个字符串,统计字符串中每个字符出现次数分析:1.使用Scanner获取用户输入的一个字符串2.创建一个Map集合,key使用Character类型存储字符,value值使用Integer类型,存储字符个数3.遍历字符串,获取字符串中每一个字符a.使用length()方法+charAt(i)方法遍历字符串b.使用toCharArray()方法,把字符串转换为字符数组,遍历数组4.使用Map集合中的方法containsKey,判断集合中是否包含指定的key(遍历得到的字符)boolean containsKey(Object key)true:包含指定的字符a.根据key(遍历得到的字符),获取value(字符个数)b.value++c.把改变后的value存储到Map集合中(更新)false:不包含指定的字符,字符第一次往集合中存储put("字符",1);*/
public class Demo08Test {public static void main(String[] args) {//1.使用Scanner获取用户输入的一个字符串System.out.println("请输入一个字符串:");String s = new Scanner(System.in).nextLine();//2.创建一个Map集合,key使用Character类型存储字符,value值使用Integer类型,存储字符个数HashMap<Character,Integer> map = new HashMap<>();//3.遍历字符串,获取字符串中每一个字符//a.使用length()方法+charAt(i)方法遍历字符串/*for(int i=0; i<s.length(); i++){char c = s.charAt(i);System.out.println(c);}*///b.使用toCharArray()方法,把字符串转换为字符数组,遍历数组char[] arr = s.toCharArray();for (char c : arr) {//4.使用Map集合中的方法containsKey,判断集合中是否包含指定的key(遍历得到的字符)//boolean containsKey(Object key)if(map.containsKey(c)){//true:包含指定的字符//a.根据key(遍历得到的字符),获取value(字符个数)Integer value = map.get(c);//b.value++value++;//c.把改变后的value存储到Map集合中(更新)map.put(c,value);}else{//false:不包含指定的字符,字符第一次往集合中存储//put("字符",1);map.put(c,1);}/*JDK1.8版本之后Map集合新增了一个方法(了解)default V getOrDefault​(Object key, V defaultValue)返回指定键映射到的值,如果此映射不包含该键的映射,则返回 defaultValue 。参数:Object key:map集合中的keyV defaultValue:给对应key设置一个默认的value值返回值:V:如果集合中key存在,根据key获取value值返回如果集合中key不存在,返回设置的默认值*///Integer value = map.getOrDefault(c, 0);//map.put(c,++value);}System.out.println(map);//{a=4, b=4, c=2}}
}

10.集合嵌套

  • 集合的嵌套:集合中的元素仍然是一个集合
  • 任何集合之间都可以相互嵌套
  • List集合可以嵌套Set集合,Set集合也可以嵌套List集合,List集合可以嵌套Map集合…
  • 注意:只要看到集合就遍历

请添加图片描述

1).List嵌套List(重点)

package com.itheima.demo02Collection;import java.util.ArrayList;/*List嵌套List(重点)*/
public class Demo01ListList {public static void main(String[] args) {//假如我们有两个班级的学生,分别存储到两个List集合中//定义一个存储第一个班级学生的List集合ArrayList<String> list01 = new ArrayList<>();list01.add("迪丽热巴");list01.add("古力娜扎");list01.add("赵丽颖");list01.add("杨幂");//定义一个存储第二个班级学生的List集合ArrayList<String> list02 = new ArrayList<>();list02.add("胡歌");list02.add("蔡徐坤");list02.add("霍建华");list02.add("陈伟霆");//定义一个List集合存储两个班级ArrayList<ArrayList<String>> allList = new ArrayList<>();//把存储学生的List集合添加到集合中allList.add(list01);allList.add(list02);//遍历allList集合,后驱集合中存储的每一个元素(ArrayList集合)for (ArrayList<String> list : allList) {//遍历每个班级的List集合,获取每一个学生的姓名for (String name : list) {System.out.println(name);}}}
}

请添加图片描述

2).List集合嵌套Map集合

package com.itheima.demo02Collection;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;/*List集合嵌套Map集合*/
public class Demo02ListMap {public static void main(String[] args) {/*两个班级的学生,分别存储在两个Map集合中key:学生的学号value:学生的姓名*///定义第一个班级的Map集合HashMap<String,String> map1 = new HashMap<>();map1.put("it001","迪丽热巴");map1.put("it002","古力娜扎");//定义第二个班级的Map集合HashMap<String,String> map2 = new HashMap<>();map2.put("hm001","胡歌");map2.put("hm002","霍建华");//定义一个ArrayList集合,泛型使用HashMap<String,String>,存储两个班级的Map集合ArrayList<HashMap<String,String>> list = new ArrayList<>();list.add(map1);list.add(map2);//遍历List集合,获取List集合中存储的每一个Map集合for (HashMap<String, String> map : list) {//遍历Map集合,获取Map集合中的key和valueSet<String> set = map.keySet();for (String key : set) {String value = map.get(key);System.out.println(key+"\t"+value);}System.out.println("-------------------------");}}
}

请添加图片描述

3).Map集合嵌套Map集合

package com.itheima.demo02Collection;import java.util.HashMap;
import java.util.Set;/*Map集合嵌套Map集合*/
public class Demo03MapMap {public static void main(String[] args) {/*两个班级的学生,分别存储在两个Map集合中key:学生的学号value:学生的姓名*///定义第一个班级的Map集合HashMap<String,String> map1 = new HashMap<>();map1.put("it001","迪丽热巴");map1.put("it002","古力娜扎");//定义第二个班级的Map集合HashMap<String,String> map2 = new HashMap<>();map2.put("hm001","胡歌");map2.put("hm002","霍建华");/*创建Map集合key:存储班级的名称传智888期黑马888期value:存储学生的Map集合map1map2*/HashMap<String,HashMap<String,String>> mapmap = new HashMap<>();//往集合中添加元素mapmap.put("传智888期",map1);mapmap.put("黑马888期",map2);//使用keySet方法获取mapmap集合中所有的key(班级名称),把key存储到一个Set集合中Set<String> classNameSet = mapmap.keySet();//遍历存储班级名称的Set集合,获取每一个班级名称(key)for (String className : classNameSet) {//根据班级名称(key),获取到集合中存储的value(存储班级的Map集合)HashMap<String, String> classMap = mapmap.get(className);//使用keySet方法获取classMap集合中所有的key(学号),把key存储到一个Set集合中Set<String> stuNumberSet = classMap.keySet();//遍历Set集合获取每一个学生的学号(key)for (String stuNumber : stuNumberSet) {//根据学生的学号(key)获取学生的姓名(value)String name = classMap.get(stuNumber);System.out.println("班级的名称:"+className+",学号:"+stuNumber+",姓名:"+name);}}}
}

请添加图片描述

第二章 斗地主综合案例:有序版本(重点)

1.需求分析:

请添加图片描述

2.代码实现:

package com.itheima.demo03Test;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;/*斗地主综合案例:1.准备牌2.洗牌3.发牌4.排序5.看牌*/
public class DouDiZhu {public static void main(String[] args) {//1.准备牌//定义HashMap集合,key:integer存储牌的索引,value:String存储组装好的牌HashMap<Integer,String> poker = new HashMap<>();//定义ArrayList集合,泛型Integer,存储牌的索引ArrayList<Integer> pokerIndex = new ArrayList<>();//定义一个变量,记录牌的索引(0-53)int index= 0;//定义两个ArrayList集合,一个存储牌的花色,一个存储牌的序号ArrayList<String> numbers = new ArrayList<>();ArrayList<String> colors = new ArrayList<>();//往集合中存储序号和花色Collections.addAll(numbers,"2","A","K","Q","J","10","9","8","7","6","5","4","3");Collections.addAll(colors,"♠","♥","♣","♦");//往扑克集合中存储大王和小王poker.put(index,"大王");pokerIndex.add(index);index++;//改变牌的索引0->1poker.put(index,"小王");pokerIndex.add(index);index++;//改变牌的索引1->2//嵌套遍历两个List集合,组装52张牌(numbers集合必须写在外层)for (String number : numbers) {for (String color : colors) {//System.out.println(color+number);//把组装好的牌存储到集合中poker.put(index,color+number);pokerIndex.add(index);index++;//改变牌的索引2->3-->4-->5....53}}//System.out.println(poker);//System.out.println(pokerIndex);//2.洗牌 使用Collections集合中的shuffle(list)方法 随机打乱集合中元素的顺序Collections.shuffle(pokerIndex);//System.out.println(pokerIndex);//3.发牌//定义4个ArrayList集合存储玩家的牌和底牌ArrayList<Integer> player01 = new ArrayList<>();ArrayList<Integer> player02 = new ArrayList<>();ArrayList<Integer> player03 = new ArrayList<>();ArrayList<Integer> diPai = new ArrayList<>();//遍历存储牌的索引的ArrayList集合(pokerIndex),获取每一个牌的索引for (int i = 0; i < pokerIndex.size(); i++) {Integer pi = pokerIndex.get(i);//使用集合的索引%3给3个玩家发牌,索引>=51给底牌发牌(注意:必须先判断底牌)if(i>=51){//给底牌发牌diPai.add(pi);}else if(i%3==0){//给玩家1发牌player01.add(pi);}else if(i%3==1){//给玩家2发牌player02.add(pi);}else if(i%3==2){//给玩家3发牌player03.add(pi);}}//System.out.println(player01);//System.out.println(player02);//System.out.println(player03);//System.out.println(diPai);//4.排序  使用Collections集合工具类中的方法sort(list) 对List集合进行升序排序Collections.sort(player01);Collections.sort(player02);Collections.sort(player03);Collections.sort(diPai);//System.out.println(player01);//System.out.println(player02);//System.out.println(player03);//System.out.println(diPai);//5.看牌 调用看牌的方法lookPoker("刘德华",player01,poker);lookPoker("周润发",player02,poker);lookPoker("周星驰",player03,poker);lookPoker("底牌",diPai,poker);}/*定义一个看牌的方法:目的提高代码的复用性参数:String name:玩家名称ArrayList<Integer> list:玩家和底牌集合HashMap<Integer,String> poker:存储牌的索引和组装好的牌的poker集合实现方法:查表法遍历玩家|底牌集合,获取Map集合的每一个key,根据key找到value*/public static void lookPoker(String name,ArrayList<Integer> list,HashMap<Integer,String> poker){//打印玩家名称,不换行System.out.print(name+": ");//遍历玩家|底牌集合,获取Map集合的每一个keyfor (Integer key : list) {//根据key找到valueString value = poker.get(key);//打印查找到的牌,不换行System.out.print(value+" ");}//打印完每一个玩家|底牌的所有牌,换行System.out.println();}
}

第三章 冒泡排序(重点)

1.原理

请添加图片描述

2.代码实现

package com.itheima.demo04bubbleSort;import java.util.Arrays;/*冒泡排序使用数组中相邻的元素依次比较,每次选出最大的元素*/
public class Demo01BubbleSort {public static void main(String[] args) {int[] arr = {5,1,8,3};System.out.println("排序前数组中的元素:"+ Arrays.toString(arr));//排序前数组中的元素:[5, 1, 8, 3]/*冒泡排序1.定一个循环嵌套外层循环:控制比较的次数:arr.length-1内层循环:控制每次比较几对元素为了防止索引越界异常: arr.lenth-1为了让每次比较的元素对数依次减少: arr.length-1-i2.在循环中依次比较arr[j]和arr[j+1]的值,选出最大的比较两个元素,使用第三方变量交换位置*///1.定一个循环嵌套for (int i = 0; i < arr.length - 1; i++) {//外层循环:控制比较的次数:arr.length-1for (int j = 0; j < arr.length - 1 - i; j++) {//内层循环:控制每次比较几对元素//2.在循环中依次比较arr[j]和arr[j+1]的值,选出最大的if(arr[j]>arr[j+1]){//比较两个元素,使用第三方变量交换位置int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}System.out.println("排序后数组中的元素:"+Arrays.toString(arr));//排序后数组中的元素:[1, 3, 5, 8]}
}
http://www.dtcms.com/wzjs/401982.html

相关文章:

  • wordpress 主题详解搜索引擎排名优化方法
  • 软件公司网站建设seo待遇
  • 钓鱼网站制作步骤搜索引擎优化答案
  • 怎么做几个版面的网站百度网盘下载速度慢破解方法
  • 做网站能带来什么问题线上推广方案怎么做
  • 做餐饮网站的目的与意义怎样在百度上发布自己的信息
  • 公司网站建设项目详情营业推广策略
  • 镇江网站制作优化合肥网站推广优化公司
  • 外贸网站建设及推广互联网推广话术
  • 精美驾校企业网站模板最近的新闻事件
  • 大连大型网站制作公司包头seo
  • 药品加工厂做网站百度推广的步骤
  • 软件技术跟网站开发有关系吗关键词优化软件哪家好
  • 可以做婚礼鲜花布置的网站武汉seo人才
  • 郑州网站建设汉狮网络营销的未来6个发展趋势
  • 优质的响应式网站建设百度指数分析数据
  • web网站开发部署优化外包服务公司
  • 北京网页设计与制作公司搜索引擎优化的方法有哪些
  • 南京网站建设公司 w7月新闻大事件30条
  • 网站建设 提成福州百度开户多少钱
  • 做网站设计都需要什么小程序制作费用一览表
  • 长春商城网站建设电商引流推广方法
  • 网站怎么做流量互换怎么在百度制作自己的网站
  • 本网站服务器深圳专门做seo的公司
  • 张家港网站制作公司好的seo公司营销网
  • 做网站好一点的软件长沙seo霸屏
  • 礼泉做网站百度免费发布信息网站
  • 外贸网站如何做推广多少钱电脑培训机构哪个好
  • 烟台市做网站找哪家好百度网络营销推广
  • 网站是广西住房和城乡建设厅建网站的公司