上午
Object中的equals方法
/main/
public static void main(String[] args) {
Stu s1 = new Stu();
s1.setId(111);
s1.setName("zs");
Stu s2 = new Stu();
s2.setId(111);
s2.setName("zs");
System.out.println(s1.equals(s2)); //结果为flase,因为Obje的equals方法默认比较的是地址值
}
实现方法一、多次使用得多次调用(不推荐)
public static boolean bj(Stu s1,Stu s2){
boolean b= s1.getId()==s2.getId()&&s1.getName().equals(s2.getName());
return b;
}
方法二、放在Stu对象内重写equals方法
@Override
public boolean equals(Object obj) {
System.out.println("1111");
*//* 对象1.equals(对象2) *//*
Stu stu=(Stu)obj;
boolean b=id==stu.getId()&&name.equals(stu.getName());
return b;
代码优化:
public boolean equals(Object obj) {
Stu stu = (Stu) obj;
return id == stu.getId() && name.equals(stu.getName());
}
用Arraylis集合学生管理系统
/* /StuManage/
* 该类专门用于定义学生管理系统相关的功能函数的
* */
public class StuManage {
//创建扫描器对象,用户扫描用户添加的学生信息,该扫描器最好创建在成员变量的位置,方便每一个函数都能使用,不用重写创建
Scanner sc=new Scanner(System.in);
//创建一个用户存储多个学生信息的集合容器。该容器需要创建在成员变量中,方便整个工具类的所有的功能函数都能共用同一个容器进行操作
//该集合容器的类型必须是学生对象类型的,为了方便把一个学生的所有进行都封装在一个对象中,也方便后续的获取。
ArrayList<Student> stus=new ArrayList<>();
//定义一个函数,判断id是否存在
public int pdid(String id){
for (int i = 0; i < stus.size(); i++)
if (stus.get(i).getId().equals(id)) {
return i;
}
return -1;
}
/*
* 添加功能
* */
public void add(){
//1.扫描用户需要添加学生信息
System.out.println("请您输入学生的id:");
String id = sc.nextLine();
//判断id是否存在
if (pdid(id)!=-1){
System.out.println("您输入的id存在!添加失败!");
return;
}
System.out.println("请您输入学生的姓名:");
String name = sc.nextLine();
System.out.println("请您输入学生的电话:");
String phone = sc.nextLine();
//2.把用户输入的数据封装在一个学生对象中
Student stu = new Student();
stu.setId(id);
stu.setName(name);
stu.setPhone(phone);
//3.存储在集合
stus.add(stu);
System.out.println("添加成功!");
}
/*
* 查询功能
* */
public void selectById(){
System.out.println("请您输入要查询的id:");
String id = sc.nextLine();
//根据id查询是否存在
int index = pdid(id);
if (index!=-1){
System.out.println(stus.get(index));
}else{
System.out.println("查询id不存在");
}
}
/*
* 删除功能
*
* */
public void delById(){
System.out.println("请您输入要删除的id:");
String id = sc.nextLine();
//根据id查询是否存在
int index = pdid(id);
if (index!=-1){
stus.remove(index);
System.out.println("删除成功!");
}else{
System.out.println("查无此人");
}
}
/*
* 修改功能
* */
public void update(){
System.out.println("请您输入要修改的id:");
String id = sc.nextLine();
int index = pdid(id);
if (index!=-1){
//说明要修改的学生存在 index
System.out.println("您要修改的信息如下:");
System.out.println(stus.get(index));
System.out.println("确定是否修改?y修改、n取消");
String key = sc.nextLine();
if (key.equalsIgnoreCase("y")){
System.out.println("1.修改名字2.修改电话");
String num = sc.nextLine();
switch (num){
case "1":
System.out.println("请您输入新名字:");
String newname = sc.nextLine();
stus.get(index).setName(newname);
System.out.println("修改成功!");
return;
case "2":
System.out.println("请您输入新电话:");
String newphone = sc.nextLine();
stus.get(index).setPhone(newphone);
System.out.println("修改成功!");
return;
default:
System.out.println("输入有误,修改失败!");
return;
}
}else{
System.out.println("您已取消修改!");
return;
}
}else{
System.out.println("查无此人");
}
}
/*
* 查询所有
* */
public void selectAll(){
if (stus.size()==0){
System.out.println("暂无数据!");
}else{
System.out.println("显示如下:");
for (Student student : stus) {
System.out.println(student);
}
}
}
public void caidan(){
while (true){
System.out.println("1.add 2.selectById 3.delById 4.updateById 5.showAll 6.exit");
String key = sc.nextLine();
switch (key){
case "1":
add();
break;
case "2":
selectById();
break;
case "3":
delById();
break;
case "4":
update();
break;
case "5":
selectAll();
break;
case "6":
System.out.println("欢迎下次使用");
System.exit(0);
default:
System.out.println("nonono");
break;
}
}
}
/Student/
public class Student {
private String id;
private String name;
private String phone;
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 String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public boolean equals(Object obj) {
Student stu = (Student) obj;
return id == stu.getId() && name.equals(stu.getName());
}
/*该方法是重写的object*/
@Override
public String toString() {
return "学生信息:{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
/main/
public static void main(String[] args) {
StuManage stuManage=new StuManage();
stuManage.caidan();
}
下午
HashSet集合容器
特点——无下标 无序 元素不能重复
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("c");//97
set.add("b");//98
set.add("a");//99
for (String s:set){
System.out.println(set);//for增强循环
}
set.remove("a");//删除
set.size();//长度
System.out.println(set);
//自动根据哈希值进行排列
}
HashMap集合容器
特点
- 存入的数据必须要以“键值”对的形式进行存储
- 键值是一一对应的
- 该容器中键的数据是不能重复的, 如果重复会覆盖键的值, 值是可以重复的
public static void main(String[] args) {
//创建一个HashMap容器
HashMap<String,String> map = new HashMap<>();
// put 添加数据
map.put("111", "zs");
map.put("222", "ls");
map.put("111", "zzsss");
//containKey() 判断是否包含指定参数的键
boolean b = map.containsKey("111");
System.out.println(b);
//KeySey()获取map集合容器中的所有的键,存在一个set集中容器中
Set<String> set = map.keySet();
for (String str : set){
System.out.println(str+"——"+map.get(str));
}
System.out.println(map);
//根据键获取对应的值
String str = map.get("1111");
System.out.println(str);
}
统计字符串中每一个字符出现的次数
public static void main(String[] args) {
String str="qwertyuqwerqw";
// 1.定义容器来存储统计的最终结果
//统计以上字符串每个字符 出现了多少次 char——Character int——Integer
//方法一
HashMap<Character,Integer> map = new HashMap<>();
// 2.循环数组
for (int i = 0; i <str.length() ; i++) {
//3.获取每个下标上的字符
char ch =str.charAt(i);
//4.把求出的字符存储在map集中容器中
//分2种情况
// 1、如果当前出现的这个字符是第一次出现则map.put(ch.1)
// 2、如果当前出现的这个字符不是第一次 则 获取之前的次数 int sum =map.get(ch); sum++; map.put(ch, sum);
if (map.containsKey(ch)){
int sum = map.get(ch);
sum++;
map.put(ch, sum);
}else{
map.put(ch, 1);
}
}
System.out.println(map);
//方法二
/* HashMap<Character,Integer> hm = new HashMap<>();
// base case
// 字符串转为字符数组
char[] chars=str.toCharArray();
for (char c : chars) {
if (hm.containsKey(c)) {
//字符已经存在
Integer val = hm.get(c);
val++;
//已经有key,再put则覆盖原来的value
hm.put(c, val);
} else {
//字符不存在
hm.put(c, 1);
}
}
// 返回结果
for(Character key:hm.keySet()){
Integer value=hm.get(key);
System.out.println(key+": "+value);
}
*/
}
java模拟打卡小程序
/DKUtil /
/*
* *1.录入员工信息2,打卡3.显示所有员工打卡记录4.退出*
录入员工信息:*
提示输入员工的相关信息:id name
* 打卡:
请您输入打卡的员工工号
* 显示所有员工打卡记录---显示每一个员工的所有的打卡时间
*
*员工类:*
int id
String name;
ArrayList<Date> dates;
*
*
水容器----arraylist<Emp>*
*/
public class DKUtil {
Scanner sc=new Scanner(System.in);
HashMap<String,Emp> emps=new HashMap<>();
/*
* 1、录入员工
*
* */
public void add(){
System.out.println("请您输入员工id:");
String id = sc.nextLine();
// int id1 = Integer.parseInt(id);
System.out.println("请您输入员工name");
String name = sc.nextLine();
/*创建员工对象*/
Emp emp = new Emp();
emp.setName(name);
emps.put(id, emp);
System.out.println("录入成功!");
}
/*
* 2.打卡
* */
public void dk(){
System.out.println("请您输入要打卡的员工id:");
String id = sc.nextLine();
if (emps.containsKey(id)){
//打卡
Date date = new Date();
Emp emp = emps.get(id);
emp.getDates().add(date);
System.out.println("打卡成功!");
}else{
System.out.println("输入的id不存在!");
}
}
/*
* 显示所有的记录
* */
public void showAll(){
//System.out.println(emps);
Set<String> set = emps.keySet();
for (String s : set) {
System.out.println(s);
//根据循环的每一个键,获取对应键的emp对象
Emp emp = emps.get(s);
System.out.println(emp);
}
}
public void caidan(){
while (true){
System.out.println("1.录入2.打卡3.显示4.退出");
String key = sc.nextLine();
switch (key){
case "1":
add();
break;
case "2":
dk();
break;
case "3":
showAll();
break;
case "4":
System.exit(0);
default:
System.out.println("重选!");
break;
}
}
}
/Emp/
public class Emp {
//private String id;
private String name;
private ArrayList<Date> dates=new ArrayList<>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<Date> getDates() {
return dates;
}
public void setDates(ArrayList<Date> dates) {
this.dates = dates;
}
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time="";
for (Date date : dates) {
String str = sdf.format(date);
time+=str+"\t";
}
return "员工信息:" +
"姓名='" + name + '\'' +
", 打卡记录=" + time +
'}';
}
}
/mian/
public static void main(String[] args) {
DKUtil dkUtil=new DKUtil();
dkUtil.caidan();
}