综合案例:数组操作


在这里插入图片描述

数组的核心操作类:Array

分析
1 类里面可以进行整型数组操作
里面有一个专门的整型数组;

class Array{//定义一个数组的操作类
	private int [] data;
}

2 可以通过外部传递大小,需要提供一个构造方法,并且这个构造方法需要接收一个一个数组大小的参数;

class Array{//定义一个数组的操作类
	private int [] data;
	public Array(int len){//实例化本类对象时必须设置数组大小
		if(len<=0){
			this.data=new int[1];//至少维持一个大小的数组
		}else{
			this.data=new int[len];//根据传入的大小定义数组长度
		}
	}
}
public class Hello{
	public static void main(String args[]){
		
	}
}

3 根据索引保存数据

private int foot; //作为保存的脚标
public boolean add(int num){//如果保存成功返回true,否则是false
		if(this.foot<this.data.length){//还有空间可以保存数据
			this.data[this.foot++]=num;//保存数据的同时改变foot的内容
			return true;
		}
		return false;
	}

4 数组输出不能在类中直接完成,一定要返回给被调用处处理。

public int[] getData(){//返回全部数据
		return this.data;
	}

5 在外部调整已有数组大小。

public void inc(int size){//已有基础上扩充数组大小
		if(size>0){
			int[] newData = new int [this.data.length+size];
			System.arraycopy(this.data, 0, newData, 0, this.data.length);
			this.data = newData;//改变引用
		}
	}

范例:程序测试

public class Hello{
	public static void main(String args[]){
		Array arr = new Array(5);//开始有5个元素
		System.out.println(arr.add(90));
		System.out.println(arr.add(10));
		System.out.println(arr.add(100));
		System.out.println(arr.add(65));
		System.out.println(arr.add(7));
		arr.inc(3);//扩充容量
		System.out.println(arr.add(70));
		System.out.println(arr.add(15));
		System.out.println(arr.add(6));
		for(int x=0;x<arr.getData().length;x++){
			System.out.print(arr.getData()[x]+" ");
		}
	}
}

在这里插入图片描述

排序数组类

对于排序的操作从本质上讲,与数组Array类的操作差别不大,只不过它最后返回的结果应该是排序的。getData方法负责返回结果,但是这个结果没有排序,不过可以利用覆写来解决此类问题。
范例:定义排序数组子类

class SortArray extends Array{//排序子类
	public SortArray(int len){
		super(len);
	}
	public int[] getData(){
		java.util.Arrays.sort(super.getData());
		return super.getData();
	}
}
public class Hello{
	public static void main(String args[]){
		SortArray arr = new SortArray(5);//开始有5个元素
		System.out.println(arr.add(90));
		System.out.println(arr.add(10));
		System.out.println(arr.add(100));
		System.out.println(arr.add(65));
		System.out.println(arr.add(7));
		arr.inc(3);//扩充容量
		System.out.println(arr.add(70));
		System.out.println(arr.add(15));
		System.out.println(arr.add(6));
		for(int x=0;x<arr.getData().length;x++){
			System.out.print(arr.getData()[x]+" ");
		}
	}
}

在这里插入图片描述

反转子类

只是在使用getDate()方法的时候返回的是一个反转后的结果。
范例:反转子类

class ReverseArray extends Array{
	public ReverseArray(int len){
		super(len);
	}
	public int[] getData(){
		int center = super.getData().length/2;
		int head = 0;
		int tail = super.getData().length-1;
		for(int x=0; x<center; x++){
			int temp = super.getData()[head];
			super.getData()[head]=super.getData()[tail];
			super.getData()[tail]=temp;
			head++;
			tail--;
		}
		return super.getData();
	}
}
public class Hello{
	public static void main(String args[]){
		ReverseArray arr = new ReverseArray(5);//开始有5个元素
		System.out.println(arr.add(90));
		System.out.println(arr.add(10));
		System.out.println(arr.add(100));
		System.out.println(arr.add(65));
		System.out.println(arr.add(7));
		arr.inc(3);//扩充容量
		System.out.println(arr.add(70));
		System.out.println(arr.add(15));
		System.out.println(arr.add(6));
		int temp [] = arr.getData();
		for(int x=0;x<temp.length;x++){
			System.out.print(temp[x]+" ");
		}
	}
}

在这里插入图片描述
面向对象继承关系的设计思路

  • 父类的设计很重要,父类中的方法必须要有意义;
  • 子类定义的时候就应该已经明确该类的功能是什么;
  • 子类在操作过程中,如果发现父类的方法不好用了,优先考虑的是覆写,而不是建立新的方法。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值