最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。

本篇第一个内容是模拟实现HandSet,其实这个模拟和之前的相比简陋了很多,因为Set的源码是比较复杂的,而且Set很大一部分是依赖于Map的,所以模拟的代码量并不多:

import java.util.HashMap;
/*** 自定义自己的HashSet,Set里面存放的相当于Map里面的key值,而真正的value则放在Map里面*/
public class SxtHashSet {HashMap map; //用来存放真实的元素信息private static final Object PRESENT = new Object();public SxtHashSet(){map = new HashMap();  //参考源码}public int size(){return map.size();}public void add(Object o){map.put(o, PRESENT);   //set的不可重复就是利用了map里面键对象的不可重复!}public static void main(String[] args) {SxtHashSet s = new SxtHashSet();s.add("aaa");s.add(new String("aaa"));System.out.println(s.size());}
}

接下来进行的是一个小练习,利用所学知识进行一个数据存储的练习,设计的数据表格如下:

两种解决方式,第一种是用javabean(一种常见的数据存储容器,利用构造器来进行数据导入与存储,JSP开发里面经常用到):

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Employee {   //这种类有时称为JavaBean,也称为实体类private int id;private String name;private int salary;private String department;private Date hireDate;//利用Eclipse自动添加构造器“Generate Constructor using Fields”选项public Employee(int id, String name, int salary, String department,String hireDate) {super();this.id = id;this.name = name;this.salary = salary;this.department = department;DateFormat format = new SimpleDateFormat("yyyy-MM");try {this.hireDate = format.parse(hireDate);} catch (ParseException e) {e.printStackTrace();}}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}public String getDepartment() {return department;}public void setDepartment(String department) {this.department = department;}public Date getHireDate() {return hireDate;}public void setHireDate(Date hireDate) {this.hireDate = hireDate;}
}
import java.awt.print.Printable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;public class Test01 {  //用JavaBean的方法来进行数据存储public static void main(String[] args) {//加上合适的构造器之后,一行对应一条记录Employee e = new Employee(0301,"gaoqi",3000,"xiangmubu","2007-10");Employee e2 = new Employee(0302,"mashibing",3000,"jiaoxuebu","2006-10");Employee e3 = new Employee(0303,"peixin",3000,"jiaoxuebu","2007-10");List<Employee> list = new ArrayList<Employee>();   //使用泛型list.add(e);list.add(e2);list.add(e3);printEmpName(list);}public static void printEmpName(List<Employee> list){for(int i=0;i<list.size();i++){System.out.println(list.get(i).getName());}}
}

第二种就是用刚学过的Map容器来存储:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Test02 {   //用容器来存储public static void main(String[] args) {     //一行记录用一个map来封装Map map = new HashMap();map.put("id", 0301);map.put("name", "gaoqi");map.put("salary", 3050);map.put("department", "xiangmubu");map.put("hireDate", "2007-10");Map map2 = new HashMap();map2.put("id", 0302);map2.put("name", "mashibing");map2.put("salary", 3050);map2.put("department", "xiangmubu");map2.put("hireDate", "2007-10");Map map3 = new HashMap();map3.put("id", 0303);map3.put("name", "peixin");map3.put("salary", 3050);map3.put("department", "xiangmubu");map3.put("hireDate", "2007-10");List<Map> list = new ArrayList<Map>();list.add(map);list.add(map2);list.add(map3);printEmpName(list);}public static void printEmpName(List<Map> list){for(int i=0;i<list.size();i++){Map tempMap = list.get(i);System.out.println(tempMap.get("name"));}}
}

JAVA学习笔记33——模拟实现HandSet+数据存储综合练习(javabean版+容器板)相关推荐

  1. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第六章:数据存储

    第 6 章 数据存储 本章介绍Android 4种存储方式的用法,包括共享参数SharedPreferences.数据库SQLite.存储卡文 件.App的全局内存,另外介绍Android重要组件-应 ...

  2. Java学习笔记33

    关于Set这个接口,我们在前面的笔记中提到过,Set是代表无序.不可重复的集合,其实Set就是一个不包含重复元 素的collection.关于Set不包含重复元素的标准是:不包含满足e1.equals ...

  3. python网络爬虫学习笔记(十):数据存储

    文章目录 1.文本存储 2.JSON文件存储 2.1 读取JOSN 2.2 输出JSON 3.CSV文件存储 3.1 写入 3.2 读取 1.文本存储 import requests from pyq ...

  4. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

  5. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  6. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  7. Java学习笔记5-1——多线程

    目录 前言 核心概念 线程创建 继承Thread类 实现Runnable接口 上述两个方法小结 实现Callable接口 并发问题简介 静态代理模式 线程状态 线程停止(stop) 线程休眠(slee ...

  8. Java学习笔记22:并发(2)

    Java学习笔记22:并发(2) 图源:PHP中文网 终止任务 终止线程有一种非常简单的方式:设置一个多线程共享的标记位,子线程用轮询的方式检查这个标记位,如果该标记位显示取消状态,就让子线程退出执行 ...

  9. Java学习笔记 2021-7-1 2021-7-8

    Java学习笔记 Stream流 1 Stream流的体验 stream流的生成操作 stream中间流操作 filter limit和skip concat和distinct sorted map和 ...

最新文章

  1. java与scala的区别 个位数以内的 就喜欢作者这么言简意赅的
  2. 基于Boost::beast模块的同步WebSocket客户端
  3. 北航计算机和上财金融,这所985财经学府,不招本科生,隐藏实力却已超过上财、央财?...
  4. 在vsphere6.5启用Tesla K80
  5. ServiceComb
  6. coreboot学习2:项目源码的初步了解
  7. pandas 聚合函数
  8. 第二章 吸取jQuery之选择器和包装集
  9. 机器学习——模型融合
  10. 强化学习之混合动作空间
  11. mediapipe示例运行
  12. Tecno(传音)手机在非洲市场占有率高达40%,成功原因是?
  13. properties的配置信息出现\u7684\u6570\u636e\u5e93\u914d\u7f6e
  14. git: patch 是什么/ 如何用
  15. 入门电机系列之3舵机
  16. [工具]嵌入式开发工作流常用工具箱
  17. 985博士-一路走来的心理历程
  18. QT实现一个简单计算器
  19. C语言求素数案例讲解
  20. TC358870XBG:HDMI转MIPI DSI芯片方案

热门文章

  1. 太极阳支持的Android版本,三星 Android 7.0 无法使用太极阳
  2. 不使用strcpy函数,编程实现把b字符串复制到a中的程序(字符串长度限制在100个字符以内)。以下是部分代码,请完成并提交
  3. 用Compose shape把外框做成封闭图形
  4. iOS15 API 新特性
  5. skyeye-基于SpringBoot打造的学校考试平台
  6. 1.6流水线:流水线、流水线周期、流水线执行时间、流水线吞吐率、流水线加速比
  7. matlab 获取文件扩展名
  8. oTree 报错 SyntaxError处理办法
  9. 开关电源方案550w高效率LLC电源图纸
  10. 100颗宝石5个海盗怎么分