2022-07-18 第六组 程梓杭 Java(4)

今日学习内容:简单的员工数据管理系统开发

image

    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、修改功能

先查询,如果存在则对目标位置的信息赋目标修改信息。

心得体会:

当所写内容稍长,需要严格定义变量名和方法名,需要仔细管理变量的作用域,需要仔细管理结构(不漏括号,保持代码缩进的规范)。
偶尔能有一些优化的思路比如:删除时,直接左移可以省掉赋空的步骤。
总之是收获颇多。

posted @ 2022-07-18 19:13  不觉已入梦  阅读(27)  评论(0编辑  收藏  举报