(三)数组中存储对象

本文介绍了一个使用Java实现的对象数组类,该类支持插入、删除、查找及显示对象的基本操作。

 

一、数组描述

在现实世界中,数组并不仅仅可以存储像我们以前所描述的基础数据类型,它还可以存储对象(当然,在Java语言中实际存储的是对象的引用。)下图描述了数组存储对象的原理:

数组存储对象内存图

二、Java语言描述数组存储对象:

package com.solid.array;

public class Person {

    //

    private String firstName;

    //

    private String lastName;

    //年龄

    private int age;

   

    /**

     * 构造方法

     * @param firstName

     * @param lastName

     * @param age

     */

    public Person(String firstName, String lastName, int age) {

       this.firstName = firstName;

       this.lastName = lastName;

       this.age = age;

    }

 

    public int getAge() {

       return age;

    }

 

    public void setAge(int age) {

       this.age = age;

    }

 

    public String getFirstName() {

       return firstName;

    }

 

    public void setFirstName(String firstName) {

       this.firstName = firstName;

    }

 

    public String getLastName() {

       return lastName;

    }

 

    public void setLastName(String lastName) {

       this.lastName = lastName;

    }  

}

 

package com.solid.array;

public class ObjectArray {

    //对象数组

    private Person[] person;

    //数组下标

    private int nElems;

   

    /**

     * 构造方法

     * @param max

     */

    public ObjectArray(int max) {

       person = new Person[max];

       nElems = 0;

    }

   

    /**

     * 插入对象

     * @param firstName

     * @param lastName

     * @param age

     */

    public void insert(String firstName, String lastName, int age) {

       person[nElems] = new Person(firstName, lastName, age);

       nElems++;

    }

   

    /**

     * 删除对象(假设lastName不重复)

     * @param lastName

     * @return

     */

    public boolean delete(String lastName) {

       int i;

       for(i=0; i<nElems; i++) {

           if(person[i].getLastName().equals(lastName))

              break;

       }

       if(i == nElems) {

           System.out.println("can't find: " + lastName);

           return false;

       } else {

           for(int j=i; j<nElems; j++) {

              person[j] = person[j+1];

           }

           nElems--;

           System.out.println("delete success");

           return true;

       }

    }

   

    /**

     * 查找对象(假设lastName不重复)

     * @param lastName

     * @return

     */

    public boolean find(String lastName) {

       int i;

       for(i=0; i<nElems; i++) {

           if(person[i].getLastName().equals(lastName))

              break;

       }

       if(i == nElems) {

           System.out.println("can't find: " + lastName);

           return false;

       } else {

           System.out.println("find it");

           return true;

       }

    }

   

    /**

     * 显示所有对象

     */

    public void display() {

       for(int i=0; i<nElems; i++) {

           System.out.println(person[i].getLastName() + person[i].getFirstName() + ":" + person[i].getAge());

       }

    }

}

 

JavaScript中,数组不仅可以存储基本数据类型(如数字、字符串等),还可以存储对象。这种特性使得数组成为处理复杂数据结构的重要工具,特别是在前端开发和数据操作中。 ### 定义包含对象数组 可以通过字面量形式或构造函数来定义一个包含对象数组: ```javascript // 使用字面量形式定义包含对象数组 let users = [ { name: "Alice", age: 25 }, { name: "Bob", age: 30 }, { name: "Charlie", age: 35 } ]; // 使用构造函数Array定义 let products = new Array( { id: 1, name: "Laptop" }, { id: 2, name: "Phone" }, { id: 3, name: "Tablet" } ); ``` 上述代码展示了如何在数组中定义对象,每个对象代表一个用户或产品,并包含多个属性[^1]。 ### 访问和操作数组中的对象 可以使用下标访问数组中的对象,并通过点符号访问对象的属性: ```javascript console.log(users[0].name); // 输出 "Alice" console.log(products[1].name); // 输出 "Phone" ``` 此外,还可以对数组中的对象进行增删改查操作。例如,向`users`数组中添加一个新的用户对象: ```javascript users.push({ name: "David", age: 40 }); ``` 或者更新某个用户的年龄: ```javascript users[2].age = 36; ``` ### 遍历数组中的对象 通常会使用循环来遍历数组中的对象并处理每个对象的数据。例如,使用`forEach`方法输出所有用户的姓名和年龄: ```javascript users.forEach(user => { console.log(`Name: ${user.name}, Age: ${user.age}`); }); ``` 也可以使用`map`方法创建一个仅包含用户名的新数组: ```javascript let userNames = users.map(user => user.name); console.log(userNames); // 输出 ["Alice", "Bob", "Charlie", "David"] ``` ### 数组对象结合的高级用法 在实际应用中,常常需要根据特定条件过滤或查找数组中的对象。例如,使用`filter`方法找出所有年龄大于30的用户: ```javascript let olderUsers = users.filter(user => user.age > 30); console.log(olderUsers); ``` 此外,还可以使用`find`方法查找满足条件的第一个对象: ```javascript let foundUser = users.find(user => user.name === "Bob"); console.log(foundUser); ``` 这些方法提供了强大的功能,能够高效地处理和操作数组中的对象数据[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值