<>利用Map集合储存并打印数据库信息

java练习题

实验目的:

1、 学习哈希映射的创建;

2、 掌握使用HashMap来创建键-值对;

3、 掌握通过键来查找对应的值。

实验要求:

任务一:
编写一个Java应用程序,完成以下功能。
(1)编写Student类,包括姓名、学号、性别以及学生的身份(身份可以是学生、班长、学委、副班长)。

(2)定义一个map集合存放一组学生信息,键值为学号,value为Student对象。

遍历集合,输出集合中的所有键-值对。

(3)提交源码和运行截图。
package Test; import java.util.HashMap; import java.util.Map; import java.util.
Scanner; import java.util.Set; import Dao.StudentDaoImpl; import Util.Student;
import Util.StudentDao; //测试类 public class TestMap { public static void main(
String[] args) { String classid = null; Scanner reader = new Scanner(System.in);
System.out.println("请输入班级号:"); classid = reader.next(); Map<String,Student> map
= new HashMap<String,Student>(); StudentDao s = new StudentDaoImpl(); map = s.
selectAllbyMap(classid); //如果返回的Map集合大小为0 if(map.size() != 0){ System.out.
println("键值对遍历"); Set<Map.Entry<String, Student>> set = map.entrySet(); for(Map.
Entry<String, Student> entry : set){ String key = entry.getKey(); Student value
= entry.getValue(); System.out.println(key + "-" + value); } }else System.out.
println("查找不到信息"); reader.close(); } } package Dao; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.
SQLException; import java.sql.Statement; import java.util.ArrayList; import java
.util.HashMap; import java.util.List; import java.util.Map; import Util.
DBConnection; import Util.Student; import Util.StudentDao; //继承类 继承StudentDao接口
public class StudentDaoImpl implements StudentDao{ Connection conn = null;
//构造方法 调用时自动连接数据库 public StudentDaoImpl(){ DBConnection db = new DBConnection();
conn= db.getConn(); } public Map<String,Student> selectAllbyMap(String classid)
{ Map<String,Student> map = new HashMap<String,Student>(); try { String sql =
null; sql = "select id,sname,ssex,sage,classid from student where classid = ?";
//预处理 PreparedStatement pst = conn.prepareStatement(sql); pst.setString(1,
classid); pst.execute(); ResultSet re = pst.executeQuery(); while(re.next()){
Student c= new Student(); c.setId(re.getString(1)); c.setName(re.getString(2));
c.setSex(re.getString(3)); c.setAge(re.getInt(4)); c.setClassid(re.getString(5))
; String id = re.getString(1); map.put(id,c); } //关闭数据库 pst.close(); conn.close(
); } catch (SQLException e) { // TODO Auto-generated catch block e.
printStackTrace(); } return map; } //这个方法是以前写的 用的是List集合 本次程序没有调用 public List<
Student> selectAll(String classid) { List<Student> list = new ArrayList<Student>
(); try (Statement stmt = conn.createStatement();){ String sql = null; sql =
"select * from student where classid =" + classid; ResultSet re = stmt.
executeQuery(sql); while(re.next()){ Student c = new Student(); c.setId(re.
getString(1)); c.setName(re.getString(2)); c.setSex(re.getString(3)); c.setAge(
re.getInt(4)); c.setClassid(re.getString(5)); list.add(c); } stmt.close(); conn.
close(); } catch (SQLException e) { // TODO Auto-generated catch block e.
printStackTrace(); } return list; } } package Util; import java.util.List;
import java.util.Map; //接口 public interface StudentDao { public List<Student>
selectAll(String classid); public Map<String,Student> selectAllbyMap(String
classid); } package Util; //Student类 public class Student { String id; String
name; String sex; int age; String classid; //封装 public String getId() { return
id; } public void setId(String id) { this.id = id; } public String getName() {
return name; } public void setName(String name) { this.name = name; } public
StringgetSex() { return sex; } public void setSex(String sex) { this.sex = sex;
} public int getAge() { return age; } public void setAge(int age) { this.age =
age; } public String getClassid() { return classid; } public void setClassid(
String classid) { this.classid = classid; } //无参构造方法 public Student() { super();
} //有参构造方法 public Student(String id, String name, String sex, int age, String
classid) { super(); this.id = id; this.name = name; this.sex = sex; this.age =
age; this.classid = classid; } //重写toString方法 public String toString() { return
"学号:" + id + " 姓名:" + name + " 性别:" + sex + " 年龄:" + age + " 班级号:" + classid; }
} package Util; import java.sql.Connection; import java.sql.DriverManager;
import java.sql.SQLException; import java.sql.Statement; public class
DBConnection{ //JDBC 连接mysql String url = "jdbc:mysql://localhost:3306/school";
String user= "root"; String password = "418521"; Connection conn = null;
Statement stmt= null; public Connection getConn(){ try { Class.forName(
"com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url,user,password);
stmt= conn.createStatement(); } catch (SQLException e) { e.printStackTrace(); }
catch (ClassNotFoundException e) { e.printStackTrace(); } return conn; } }
下面是运行结果:

输入一个数据库中不存在的班级号 查找不到信息

查询成功!

<>知识点

Map集合特点
存储任意的键值对(key-value),键:无序,无下标,键内容不可重复;值:无序,无 下标,值可以重复。
Map集合的实现类:hashMap

键值对遍历
将所有的键值对看作一个整体Map.Entry,因为key和value的特点,key- value整体是
无序,无下标,元素内容不可重复,所以是一个Set集合.通过entrySet()方法返回所有的
键值对对象组成的Set集合。再通过getKey()和getValue()分别获取key和value
//键值对遍历 System.out.println("-----键值对遍历----"); 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+"-"+
value); }
本人计算机大二学生,想把每次作业整理成文章分享给大家。
如果程序有不对的地方,希望大家能指出,和大家共同学习和进步!

技术
©2019-2020 Toolsou All rights reserved,
vue项目中对axios的全局封装单个按键控制多种流水灯状态软件测试之BUG描述随机森林篇 R语言实现TP6验证器的使用示例及正确验证数据C语言编程之查找某学号学生成绩一文揭秘阿里、腾讯、百度的薪资职级c语言的5种常用排序方法2021年1月程序员工资统计,平均14915元Bug数能否做为技术人员考核的KPI?