2022-07-18 第六组 程梓杭 Java(4)
今日学习内容:简单的员工数据管理系统开发
1. Java基础算法与数组强化
2. ‘查询’功能
3. ‘添加’功能
4. ‘删除’功能
5. ‘修改’功能
1、Java基础与数组强化
扩容与缩容
扩容与缩容的思想是用(或长或短)新数组存储原数组的内容,循环次数为新旧数组中数组长度短的一方,最后将新数组“赋值”给原数组(这里的赋值一并将数组长度也赋给了原数组)。
线性查找
即循环嵌套选择,依次比对直到查到目标位置时退出循环,循环次数为目标位置下标,未退出循环则目标不在数组中。
扩容示例:
for (int i = 0; i < ID.length; i++) {
IDPlus[i] = ID[i];
namePlus[i] = name[i];
IDPlus[i] = ID[i];
namePlus[i] = name[i];
}
ID = IDPlus;
name = namePlus;
2、查询功能
主要代码示例,后续的添加、删除与修改都涉及到了查询功能,所以放在第一位。
//id为目标,线性选择的方法有很多种
//可以在for循环外部定义i以便于作为信号
//可以用另一个变量保存i的值,或者用01变换或者用true与false变换来作为信号
int N = 0;
for(int i = 0; i<ID.length; i++){
if(ID[i] == id) break;
N++;
}
if(ID.length != N) System.out.println("查询目标姓名为"+name[N]);
else System.out.println("查询目标不存在");
3、添加功能
添加功能比较麻烦,首先是查询空位以添加目标,然后还要考虑查询是否剩余空位来考虑是否进行数组扩容。(查询与扩容都已给出,不作示例)
4、删除功能
先查询,如果存在则对目标位置赋空后进行后续元素左移(直接左移也能覆盖目标达到赋空的目的)(依据要求决定是否缩容)
左移代码示例:
//i为目标元素位置,循环到ID.length-1为循环上限,如果设置数组长度够长,需要再查询数组内“第一个空位下标-1”替换数组长度-1。
//缩容和扩容几乎一致,但是循环次数为新数组(新数组长度短)的次数。
while(i<ID.length-1){
name[N] = name[N+1];
ID[N] = ID[N+1];
i++;
}
5、修改功能
先查询,如果存在则对目标位置的信息赋目标修改信息。
心得体会:
当所写内容稍长,需要严格定义变量名和方法名,需要仔细管理变量的作用域,需要仔细管理结构(不漏括号,保持代码缩进的规范)。
偶尔能有一些优化的思路比如:删除时,直接左移可以省掉赋空的步骤。
总之是收获颇多。