简单编写一个数组API 再用demo去调用编写的API
* 追加元素
* 打印数组元素
* 获取指定位置的数组
* 替换指定位置的元素
/**
* 数组元素的增删改查的需求
* 初始化 指定个数和不指定个数
* 追加元素
* 打印数组元素
* 获取指定位置的数组
* 替换指定位置的元素
*/
public class ArrDemo {
// 声明字段
// 封装一个整型数组
private int[] elements;
// 有效元素统计 默认值为0
private int count;
// 无参构造器-->默认16个元素
public ArrDemo(){
this.elements = new int[16];
}
// 有参构造器-->指定几个元素
public ArrDemo(int cap){
this.elements = new int[cap];
}
// 声明方法
// 1>追加操作
public void append(int val){
// 第一步:验证容量是否充足 TODO
// 第二步:追加元素
this.elements[this.count] = val;
this.count ++ ;
}
// 2>打印数组元素 可以用父类的toString方法
// 但是里面的内容不符合开发需求 所以需要重写(打完收工原则)
// 打印出[x,x,x...]的格式
// 重新编写的toString方法存在一个问题 就是没有考虑可变字符串
// 可变字符串 StringBuilder()
@Override
public String toString() {
// return Arrays.toString(this.elements);
// String str = "[";
// for (int i = 0; i < this.count ; i++) {
// str += this.elements[i];
// if (i == this.count - 1){
// str += "]";
// }else{
// str += ",";
// }
// }
// return str;
// 如果没有元素 需要进行校验
if (this.count == 0){
return "[]";
}
// 需要给StringBuilder声明容量大小
// [元素1,元素2...] [+元素+,+元素+]
// -->this.count + (this.count-1)+2
int cap = this.count + (this.count - 1) + 2;
// 声明可变字符串组
StringBuilder sb = new StringBuilder(cap);
sb.append("[");
// 因为考虑用索引,所以不用加强for循环
for (int i = 0; i < this.count ; i++) {
// 声明一个数组去装遍历出来的元素
int num = this.elements[i];
sb.append(num).append(",");
}
// 因为最后一个是]结尾,而不是,
sb.deleteCharAt(sb.length() - 1).append("]");
return sb.toString();
}
// 3>获取指定位置的元素
public int getEle(int index){
// 校验传入的索引的值是否合法
// index不能传入负数
// 存在一个问题 校验逻辑和业务逻辑混在一起 不利于后期添加其他校验逻辑
// if (index >= 0 && this.count > index ){
// return this.elements[index];
// }else{
// return -1;
// }
// 校验传入的索引的值是否合法
// index不能传入负数
if (index < 0 || index >= this.count){
return -1;
}else{
return this.elements[index];
}
}
// 4>替换指定位置的元素
// 逻辑和前面一个一样
// 校验传入的索引的值是否合法
// index不能传入负数 和 大于等于统计的值
public void setEleAt(int index,int newEle){
if (index < 0 || index >= this.count){
return;
}else{
this.elements[index] = newEle;
}
}
}
测试类调用方法
public class ArrDemoTest{
public static void main(String[] args) {
// 声明一个6个元素的数组
ArrDemo arrDemo = new ArrDemo(6);
// System.out.println(arrDemo.toString());
// 1>追加元素
arrDemo.append(5);
arrDemo.append(9);
// 2>打印数组元素
// 直接打印就可以了 因为已经重写了toString的方法
// 但是会发现一个问题 就是它会把其他元素全部打印出来 这就不符合封装的原则,所以需要重写toString
System.out.println(arrDemo);
// 3>获取指定位置的元素
int ele = arrDemo.getEle(1);
System.out.println(ele);
// 4>替换指定位置的元素
arrDemo.setEleAt(1,99);
System.out.println(arrDemo);
}
}