用类的思想封装一个数组,实现其基本功能

package array;

import com.sun.istack.internal.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author hegx
 */
public class Array {

    /**
     * 日志变量
     */
    private static Logger logger = LoggerFactory.getLogger(Array.class);

    /**
     *定义常用常量
     */
    private static String NULL_VALUES = "传入的值为空";

    /**
     * 数组长度
     */
    public int length;

    /**
     * 数组元素
     */
    public int elms;

    /**
     * 定义一个字符串数据类型的数组
     */
    public String[] strArray;


    /**
     * 默认构造器
     */
    public Array() {
        this.elms = 0;
        this.length = 30;
        strArray = new String[length];
    }

    /**
     * 给定数组长度
     * @param length
     */
    public Array(int length) {
        this.elms = 0;
        this.length = length;
        strArray = new String[length];
    }

    /**
     * @return
     */
    private int size(){
        return this.elms;
    }


    /**
     * 新增元素
     * @param value
     * @return
     */
    private boolean add(@NotNull String value){
        if (null == value){
            logger.info(NULL_VALUES);
            return  false;
        }
        if (length == elms){
            logger.info("数组已经满,无法再装入新元素");
            return false;
        }
        strArray[elms] = value;
          elms++;
        System.out.println("成功添加一个元素:"+value);
        return true;
    }

    /**
     * 查询数组中的元素  找到就返回该元素的下标值,否则返回 -1
     * @return index or -1
     */
    private int findMeter(String value){
        if (null == value){
            System.out.println(NULL_VALUES);
            return -1;
        }
        if (elms !=0){
            for (int i = 0; i< elms; i++){
                if (strArray[i]!=null&&strArray[i].equals(value)){
                    return i;
                }
            }
        }
          return -1;
    }


    /**
     * 根据下标值获取数组元素
     * @param index
     * @return
     */
    private String getByIndex(@NotNull int index){
        if (index>=length || index <=-1){
            System.out.println("访问下标越界,查找失败");
            return null;
        }
        return strArray[index];
    }

    /**
     * 根据数组index更新 数组的内容
     * @param ordValue
     * @param newValue
     * @return 更新成功返回 true ,否则 false
     */
    private boolean updateMeter(String ordValue,String newValue){
        int index = findMeter(ordValue);
        if (index==-1){
            System.out.println("不存在的字符值");
            return false;
        }
        strArray[index] = newValue;
        System.out.println("更新成功");
        return true;
    }

    /**
     * 删除元素
     * @param value
     * @return
     */
    private boolean delete(String value){
        int index = findMeter(value);
        if (index!=-1){
            strArray[index] = null;
            elms--;
            return true;
        }
        return false;
    }

    /**
     * 删除元素
     * @param index
     * @return
     */
    private boolean delete(int index){
        if (index!=-1){
            strArray[index] = null;
            elms--;
            System.out.println("delete... success!");
            return true;
        }
        return false;
    }

    /**
     * 打印数组的值
     */
    private void display(){
        System.gc();
        if (elms !=0){
            System.out.println("<----------------------开始遍历数组-------------->");
            for (int i = 0; i < elms; i++) {
                System.out.println(strArray[i]+"\t");
            }
        }
    }

    public static void main(String[] args) {
        Array array = new Array();
        array.add("helloWord");
        array.add("li");
        array.add("laoHe");
        System.out.println(array.size());
        int li = array.findMeter("li");
        System.out.println(array.getByIndex(li));
        System.out.println(li);
        array.delete(li);
        array.updateMeter("li","老何");
        System.out.println(array.delete("老何"));
        array.display();
        System.out.println(array.length);
    }
}
 
  

输出结果:

这里我配置了Java虚拟机相关参数来测试GC现象


你可能感兴趣的:(Java数据结构与算法)