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现象