我正在使用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
的关键值?
答案 0 :(得分:0)
以下代码段将帮助您增加年龄。
Integer age = (Integer)idNumber.get(0).remove(1);
age++;
idNumber.get(0).add(1, age);
说明:
- idNumber.get(0):这里0代表年龄需要增加的人的密钥
- remove(1):将从ArrayList person(即age)中删除并返回索引1处的对象
- 年龄++:将年龄增加1
- add(1,age):将年龄对象添加到索引为1的ArrayList。
但是正如已经建议的那样编写代码并不是一种好的做法,而不是使用ArrayList preson,更好的方法是设计Person类并将其对象存储在HashMap中作为值。
答案 1 :(得分: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);