java笔记冯佳微盘,JAVA学习笔记14 - osc_vsdge2u3的个人空间 - OSCHINA - 中文开源技术交流社区...

01(Map集合概述和特点)

* A:Map接口概述

* 查看API可以知道:

* 将键映射到值的对象

* 一个映射不能包含重复的键

* 每个键最多只能映射到一个值

* B:Map接口和Collection接口的不同

* Map是双列的,Collection是单列的

* Map的键唯一,Collection的子体系Set是唯一的

* Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效

02(Map集合的功能概述)

* A:Map集合的功能概述

* a:添加功能

* V put(K key,V value):添加元素。

* 如果键是第一次存储,就直接存储元素,返回null

* 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

* b:删除功能

* void clear():移除所有的键值对元素

* V remove(Object key):根据键删除键值对元素,并把值返回

* c:判断功能

* boolean containsKey(Object key):判断集合是否包含指定的键

* boolean containsValue(Object value):判断集合是否包含指定的值

* boolean isEmpty():判断集合是否为空

* d:获取功能

* Set> entrySet():

* V get(Object key):根据键获取值

* Set keySet():获取集合中所有键的集合

* Collection values():获取集合中所有值的集合

* e:长度功能

* int size():返回集合中的键值对的个数

packagecom.jia.map;importjava.util.Collection;importjava.util.HashMap;importjava.util.Map;public classDemo1_Map {public static voidmain(String[] args) {//demo1();//demo2();

Map map = new HashMap<>();

map.put("张三", 23);

map.put("李四", 24);

map.put("王五", 25);

map.put("赵六", 26);

Collection c =map.values();

System.out.println(c);

System.out.println(map.size());

}public static voiddemo2() {

Map map = new HashMap<>();

map.put("张三", 23);

map.put("李四", 24);

map.put("王五", 25);

map.put("赵六", 26);//Integer value = map.remove("张三");//根据键删除元素,返回键对应的值//System.out.println(value);

System.out.println(map.containsKey("张三")); //判断是否包含传入的键

System.out.println(map.containsValue(100)); //判断是否包含传入的值

System.out.println(map);

}public static voiddemo1() {

Map map = new HashMap<>();

Integer i1= map.put("张三", 23);

Integer i2= map.put("李四", 24);

Integer i3= map.put("王五", 25);

Integer i4= map.put("赵六", 26);

Integer i5= map.put("张三", 26); //相同的键不存储,值覆盖,把被覆盖的值返回

System.out.println(map);

System.out.println(i1);

System.out.println(i2);

System.out.println(i3);

System.out.println(i4);

System.out.println(i5);

}

}

03(Map集合的遍历之键找值)

* A:键找值思路:

* 获取所有键的集合

* 遍历键的集合,获取到每一个键

* 根据键找值

* B:案例演示

* Map集合的遍历之键找值

HashMap hm = new HashMap<>();

hm.put("张三", 23);

hm.put("李四", 24);

hm.put("王五", 25);

hm.put("赵六", 26);

/*Set keySet = hm.keySet(); //获取集合中所有的键

Iterator it = keySet.iterator(); //获取迭代器

while(it.hasNext()) { //判断单列集合中是否有元素

String key = it.next(); //获取集合中的每一个元素,其实就是双列集合中的键

Integer value = hm.get(key); //根据键获取值

System.out.println(key + "=" + value); //打印键值对

}*/

for(String key : hm.keySet()) { //增强for循环迭代双列集合第一种方式

System.out.println(key + "=" + hm.get(key));

}

04(Map集合的遍历之键值对对象找键和值)

* A:键值对对象找键和值思路:

* 获取所有键值对对象的集合

* 遍历键值对对象的集合,获取到每一个键值对对象

* 根据键值对对象找键和值

* B:案例演示

* Map集合的遍历之键值对对象找键和值

HashMap hm = new HashMap<>();

hm.put("张三", 23);

hm.put("李四", 24);

hm.put("王五", 25);

hm.put("赵六", 26);

/*Set> entrySet = hm.entrySet(); //获取所有的键值对象的集合

Iterator> it = entrySet.iterator();//获取迭代器

while(it.hasNext()) {

Entry en = it.next(); //获取键值对对象

String key = en.getKey(); //根据键值对对象获取键

Integer value = en.getValue(); //根据键值对对象获取值

System.out.println(key + "=" + value);

}*/

for(Entry en : hm.entrySet()) {

System.out.println(en.getKey() + "=" + en.getValue());

}

05(HashMap集合键是Student值是String的案例)

* A:案例演示

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

packagecom.jia.bean;public class Student implements Comparable{privateString name;private intage;publicStudent() {super();

}public Student(String name, intage) {super();this.name =name;this.age =age;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}

@OverridepublicString toString() {return "Student [name=" + name + ", age=" + age + "]";

}

@Overridepublic inthashCode() {final int prime = 31;int result = 1;

result= prime * result +age;

result= prime * result + ((name == null) ? 0: name.hashCode());returnresult;

}

@Overridepublic booleanequals(Object obj) {if (this ==obj)return true;if (obj == null)return false;if (getClass() !=obj.getClass())return false;

Student other=(Student) obj;if (age !=other.age)return false;if (name == null) {if (other.name != null)return false;

}else if (!name.equals(other.name))return false;return true;

}

@Overridepublic intcompareTo(Student o) {int num = this.age - o.age; //以年龄为主要条件

return num == 0 ? this.name.compareTo(o.name) : num;

}

}

packagecom.jia.map;importjava.util.HashMap;importcom.jia.bean.Student;public classDemo5_HashMap {/** * A:案例演示

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

* 键是学生对象,代表每一个学生

* 值是字符串对象,代表学生归属地*/

public static voidmain(String[] args) {

HashMap hm = new HashMap<>();

hm.put(new Student("张三", 23), "北京");

hm.put(new Student("张三", 23), "上海");

hm.put(new Student("李四", 24), "广州");

hm.put(new Student("王五", 25), "深圳");

System.out.println(hm);

}

}

06(LinkedHashMap的概述和使用)

* A:案例演示

* LinkedHashMap的特点

* 底层是链表实现的可以保证怎么存就怎么取

packagecom.jia.map;importjava.util.LinkedHashMap;public classDemo6_LinkedHashMap {/***@paramargs

* LinkedHashMap可以保证怎么存就怎么取*/

public static voidmain(String[] args) {

LinkedHashMap lhm = new LinkedHashMap<>();

lhm.put("张三", 23);

lhm.put("李四", 24);

lhm.put("赵六", 26);

lhm.put("王五", 25);

System.out.println(lhm);

}

}

07(TreeMap集合键是Student值是String的案例)

* A:案例演示

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

packagecom.jia.map;importjava.util.Comparator;importjava.util.TreeMap;importcom.jia.bean.Student;public classDemo7_TreeMap {public static voidmain(String[] args) {//demo1();

TreeMap tm = new TreeMap<>(new Comparator() {

@Overridepublic intcompare(Student s1, Student s2) {int num = s1.getName().compareTo(s2.getName()); //按照姓名比较

return num == 0 ? s1.getAge() -s2.getAge() : num;

}

});

tm.put(new Student("张三", 23), "北京");

tm.put(new Student("李四", 13), "上海");

tm.put(new Student("赵六", 43), "深圳");

tm.put(new Student("王五", 33), "广州");

System.out.println(tm);

}public static voiddemo1() {

TreeMap tm = new TreeMap<>();

tm.put(new Student("张三", 23), "北京");

tm.put(new Student("李四", 13), "上海");

tm.put(new Student("王五", 33), "广州");

tm.put(new Student("赵六", 43), "深圳");

System.out.println(tm);

}

}

08(统计字符串中每个字符出现的次数)

* A:案例演示

* 需求:统计字符串中每个字符出现的次数

String str = "aaaabbbcccccccccc";

char[] arr = str.toCharArray(); //将字符串转换成字符数组

HashMap hm = new HashMap<>(); //创建双列集合存储键和值

for(char c : arr) { //遍历字符数组

/*if(!hm.containsKey(c)) { //如果不包含这个键

hm.put(c, 1); //就将键和值为1添加

}else { //如果包含这个键

hm.put(c, hm.get(c) + 1); //就将键和值再加1添加进来

}

//hm.put(c, !hm.containsKey(c) ? 1 : hm.get(c) + 1);

Integer i = !hm.containsKey(c) ? hm.put(c, 1) : hm.put(c, hm.get(c) + 1);

}

for (Character key : hm.keySet()) { //遍历双列集合

System.out.println(key + "=" + hm.get(key));

}

09(集合嵌套之HashMap嵌套HashMap)

* A:案例演示

* 集合嵌套之HashMap嵌套HashMap

packagecom.heima.map;importjava.util.HashMap;importcom.heima.bean.Student;public classDemo8_HashMapHashMap {/*** * A:案例演示

* 集合嵌套之HashMap嵌套HashMap

*

* 需求:

* 双元课堂有很多基础班

* 第88期基础班定义成一个双列集合,键是学生对象,值是学生的归属地

* 第99期基础班定义成一个双列集合,键是学生对象,值是学生的归属地

*

* 无论88期还是99期都是班级对象,所以为了便于统一管理,把这些班级对象添加到双元课堂集合中*/

public static voidmain(String[] args) {//定义88期基础班

HashMap hm88 = new HashMap<>();

hm88.put(new Student("张三", 23), "北京");

hm88.put(new Student("李四", 24), "北京");

hm88.put(new Student("王五", 25), "上海");

hm88.put(new Student("赵六", 26), "广州");//定义99期基础班

HashMap hm99 = new HashMap<>();

hm99.put(new Student("唐僧", 1023), "北京");

hm99.put(new Student("孙悟空",1024), "北京");

hm99.put(new Student("猪八戒",1025), "上海");

hm99.put(new Student("沙和尚",1026), "广州");//定义双元课堂

HashMap, String> hm = new HashMap<>();

hm.put(hm88,"第88期基础班");

hm.put(hm99,"第99期基础班");//遍历双列集合

for(HashMap h : hm.keySet()) { //hm.keySet()代表的是双列集合中键的集合

String value = hm.get(h); //get(h)根据键对象获取值对象//遍历键的双列集合对象

for(Student key : h.keySet()) { //h.keySet()获取集合总所有的学生键对象

String value2 =h.get(key);

System.out.println(key+ "=" + value2 + "=" +value);

}

}

}

}

10(HashMap和Hashtable的区别)

* A:注意

* HashMap和Hashtable的区别

* Hashtable是JDK1.0版本出现的,是线程安全的,效率低,HashMap是JDK1.2版本出现的,是线程不安全的,效率高

* Hashtable不可以存储null键和null值,HashMap可以存储null键和null值

11(Collections工具类的概述和常见方法讲解)

* A:Collections类概述

* 针对集合操作 的工具类

* B:Collections成员方法

*

public static void sort(List list)

public static int binarySearch(List> list,T key)

public static T max(Collection> coll)

public static void reverse(List> list)

public static void shuffle(List> list)

12(模拟斗地主洗牌和发牌)

* A:案例演示

* 模拟斗地主洗牌和发牌,牌没有排序

//买一副扑克

String[] num = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

String[] color = {"方片","梅花","红桃","黑桃"};

ArrayList poker = new ArrayList<>();

for(String s1 : color) {

for(String s2 : num) {

poker.add(s1.concat(s2));

}

}

poker.add("小王");

poker.add("大王");

//洗牌

Collections.shuffle(poker);

//发牌

ArrayList gaojin = new ArrayList<>();

ArrayList longwu = new ArrayList<>();

ArrayList me = new ArrayList<>();

ArrayList dipai = new ArrayList<>();

for(int i = 0; i < poker.size(); i++) {

if(i >= poker.size() - 3) {

dipai.add(poker.get(i));

}else if(i % 3 == 0) {

gaojin.add(poker.get(i));

}else if(i % 3 == 1) {

longwu.add(poker.get(i));

}else {

me.add(poker.get(i));

}

}

//看牌

System.out.println(gaojin);

System.out.println(longwu);

System.out.println(me);

System.out.println(dipai);

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

* A:案例演示

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

*

//买一副牌

String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

String[] color = {"方片","梅花","红桃","黑桃"};

HashMap hm = new HashMap<>(); //存储索引和扑克牌

ArrayList list = new ArrayList<>(); //存储索引

int index = 0; //索引的开始值

for(String s1 : num) {

for(String s2 : color) {

hm.put(index, s2.concat(s1)); //将索引和扑克牌添加到HashMap中

list.add(index); //将索引添加到ArrayList集合中

index++;

}

}

hm.put(index, "小王");

list.add(index);

index++;

hm.put(index, "大王");

list.add(index);

//洗牌

Collections.shuffle(list);

//发牌

TreeSet gaojin = new TreeSet<>();

TreeSet longwu = new TreeSet<>();

TreeSet me = new TreeSet<>();

TreeSet dipai = new TreeSet<>();

for(int i = 0; i < list.size(); i++) {

if(i >= list.size() - 3) {

dipai.add(list.get(i)); //将list集合中的索引添加到TreeSet集合中会自动排序

}else if(i % 3 == 0) {

gaojin.add(list.get(i));

}else if(i % 3 == 1) {

longwu.add(list.get(i));

}else {

me.add(list.get(i));

}

}

//看牌

lookPoker("高进", gaojin, hm);

lookPoker("龙五", longwu, hm);

lookPoker("冯佳", me, hm);

lookPoker("底牌", dipai, hm);

}

public static void lookPoker(String name,TreeSet ts,HashMap hm) {

System.out.print(name + "的牌是:");

for (Integer index : ts) {

System.out.print(hm.get(index) + " ");

}

System.out.println();

}

14(泛型固定下边界)

* ? super E

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值