0

我正在使用一个HashMap<Integer, ArrayList>. 在我ArrayList的 中,第二个元素是int我需要将其增加一的元素。我怎样才能做到这一点?

public class IncrementAge {

    /** integer is key; value is ArrayList. */
    Map<Integer, ArrayList> idNumber = new HashMap<Integer, ArrayList>();

    /** array that contains name and age (only two elements). */
    ArrayList<> person = new ArrayList();

    /** name is 1st(0) element in array while age is second(1) element. */
    this.person.add(0, "jose");
    this.person.add(1, 32);

    /** place this object in hashMap with key=0; obj=person. */

    idNumber.put(0, this.person);
}

idNumber我应该如何根据键值增加这个对象的年龄HashSet

4

2 回答 2

0

没有必要向寻求您帮助的人吐口水。

@user2943394,是的,你的设计在这里不好。OO 的存在就是为了简化您的编码。

这是一个快速示例,您可以如何做您需要做的事情,这样它看起来很不错。但请注意,这只是 2 分钟的代码废品,而不是最先进的设计。

public class Person {
    private String firstName;
    private String lastName;
    private int age;

    // Constructor
    public Person(...) {
        ...
    }


    // Getters & Setters
    public int getAge() {
        return this.age;
    }

    public void setAge(int age) {
        // you dont want to pass the wrong value, so you might want to check for that also
        this.age = age;
    }

    ...
}

public class PersonRepo {
    private Map<Integer, Person> personMap;

    public PersonRepo() {
        this.personMap = new HashMap<Integer, Person>();

        loadPersons();
    }

    private void loadPersons() {
        // load them from text file, or whicever source you have
        // or simply add them manually
    }

    public Person getPersonById(int id) {
        return this.personMap.get(id);
    }
}

public class PersonService {
    private PersonRepo personRepo;

    public PersonService() {
        this.personRepo = new PersonRepo();
    }

    public void incrementPersonAge(int personId, int step) {
        Person person = this.personRepo.getPersonById(personId);
        int oldAge = person.getAge();
        int newAge = oldAge + step;
        person.setAge(newAge);
    }
}

public class PersonTester() {
    public static void main(String[] args) {
        PersonService personService = new PersonService();

        personService.incrementPersonAge(12, 1);
    }
}

如果你真的坚持自己的方式,你可以这样做:

int oldAge = (Integer) idNmber.get(0).get(1);
int newAge = oldAge + 1;
idNumber.get(0).set(1, newAge);
于 2013-11-12T13:18:14.090 回答
0

以下代码片段将帮助您增加年龄。

Integer age = (Integer)idNumber.get(0).remove(1);
age++;
idNumber.get(0).add(1, age);

解释:
- idNumber.get(0):这里 0 表示需要增加年龄的人的键
- remove(1):将从 ArrayList 人即年龄中删除并返回索引为 1 的对象。
- age++:将年龄增加 1
- add(1, age):将年龄对象添加到索引 1 处的 ArrayList。

但正如已经建议的那样,这种编写代码的方式不是好的做法,而不是使用 ArrayList preson,更好的方法是设计 Person 类并将其对象作为值存储在 HashMap 中。

于 2013-11-12T13:01:28.567 回答