数组是一段连续的存储空间,数组在创建时大小即被定义,不可更改。如果数组的大小可以随意更改伸缩
,那么就可以有效避免空间浪费或者数据溢出的问题,基于这一愿望,将数组封装成一个类的队列类产生
了。在队列中,数组是基本属性,添加/删除一个数组元素,寻找/遍历数组元素,都作为方法定义在类中
。这体现了java语言的一大特性:封装性。
代码如下:
public class DefinedList {
//定义一个Object数组
Object []list=new Object[0];
//添加一个元素的方法
public void add(Object obj){
//创建一个长度为list.length+1的数组
Object []newlist=new Object[list.length+1];
//将原数组中的元素赋给新数组
for(int i=0;i<list.length;i++){
newlist[i]=list[i];
}
newlist[list.length]=obj;
list=newlist;
}
//删除指定索引index的方法
public void delete(int index){
//创建一个长度为list.length-1的数组
Object []newlist=new Object[list.length-1];
//将原数组的元素赋给新数组
for(int i=0;i<index;i++){
newlist[i]=list[i];
}
for(int i=index+1;i<list.length;i++){
newlist[i-1]=list[i];
list=newlist;
}
}
//寻找指定索引的数组元素的方法
public Object search(int index){
return list[index];
}
}
以上代码中数组元素被声明为Object类型,这样DefinedList类即可实现对不同元素类型的数组的封装。
由于会将其他类自动转型为Object类,所以再需要调用该类中的元素或方法时须对其强制转型,代码如下
:
public class Student {
String name;
float score;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setScore(float score){
this.score=score;
}
public float getScore(){
return score;
}
public void study(){
score++;
System.out.println(name+"is studying,his score is "+score);
}
}
public class ManagerList {
/**
* 主函数
*/
public static void main(String[] args) {
// 创建一个DefinedList对象
DefinedList fun=new DefinedList();
//创建一个随机类对象
Random rand=new Random();
for(int i=0;i<10;i++){
int c=rand.nextInt(10);
Student stu=new Student();
stu.setName("学生"+c);
fun.add(stu);
}
for(int i=0;i<fun.size();i++){
Student stu=(Student) fun.search(i);
stu.study();
}
}
}
,那么就可以有效避免空间浪费或者数据溢出的问题,基于这一愿望,将数组封装成一个类的队列类产生
了。在队列中,数组是基本属性,添加/删除一个数组元素,寻找/遍历数组元素,都作为方法定义在类中
。这体现了java语言的一大特性:封装性。
代码如下:
public class DefinedList {
//定义一个Object数组
Object []list=new Object[0];
//添加一个元素的方法
public void add(Object obj){
//创建一个长度为list.length+1的数组
Object []newlist=new Object[list.length+1];
//将原数组中的元素赋给新数组
for(int i=0;i<list.length;i++){
newlist[i]=list[i];
}
newlist[list.length]=obj;
list=newlist;
}
//删除指定索引index的方法
public void delete(int index){
//创建一个长度为list.length-1的数组
Object []newlist=new Object[list.length-1];
//将原数组的元素赋给新数组
for(int i=0;i<index;i++){
newlist[i]=list[i];
}
for(int i=index+1;i<list.length;i++){
newlist[i-1]=list[i];
list=newlist;
}
}
//寻找指定索引的数组元素的方法
public Object search(int index){
return list[index];
}
}
以上代码中数组元素被声明为Object类型,这样DefinedList类即可实现对不同元素类型的数组的封装。
由于会将其他类自动转型为Object类,所以再需要调用该类中的元素或方法时须对其强制转型,代码如下
:
public class Student {
String name;
float score;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setScore(float score){
this.score=score;
}
public float getScore(){
return score;
}
public void study(){
score++;
System.out.println(name+"is studying,his score is "+score);
}
}
public class ManagerList {
/**
* 主函数
*/
public static void main(String[] args) {
// 创建一个DefinedList对象
DefinedList fun=new DefinedList();
//创建一个随机类对象
Random rand=new Random();
for(int i=0;i<10;i++){
int c=rand.nextInt(10);
Student stu=new Student();
stu.setName("学生"+c);
fun.add(stu);
}
for(int i=0;i<fun.size();i++){
Student stu=(Student) fun.search(i);
stu.study();
}
}
}