Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update specific object items inside Arraylist java

Tags:

java

arrays

How can I update the record from my Arraylist object?

e.g:

List<User> userList = new ArrayList<User>();

User user = new User();
user.setUserId(1);
user.setUsername("user1");
userList.add(user);

User user = new User();
user.setUserId(2);
user.setUsername("user2");
userList.add(user);

User user = new User();
user.setUserId(3);
user.setUsername("user3");
userList.add(user);

Now I want to update the specific records on my ArrayList. Let's say I want to update the username of user id #2. e.g:

User user = new User();
user.setUserId(2);
user.setUsername("new_username2");

//before i want to remove or update the record on the list which contain user id #2
userList.add(user);

Something like I want to search from the list that userList.contains(2) then remove or update it with the new values.

like image 692
Cris Avatar asked Oct 07 '15 13:10

Cris


3 Answers

If you know the position of the element do only the following:

userList.get(index).setUsername("newvalue");

If not, you need to loop all the elements to find the element to update

for (User user : userList) {
    if (user.getUserId().equals(searchedId)) {
        user.setUsername("newvalue");
        break;  
    }
}
like image 186
Davide Lorenzo MARINO Avatar answered Oct 12 '22 16:10

Davide Lorenzo MARINO


In your case I think it's better using a Map instead of a List:

Map<Integer, User> userMap = new HashMap<Integer, User>();

User user = new User();
user.setUserId(1);
user.setUsername("user1");
userMap.put(user.getUserId(), user);

user = new User();
user.setUserId(2);
user.setUsername("user2");
userMap.put(user.getUserId(), user);

user = new User();
user.setUserId(3);
user.setUsername("user3");
userMap.put(user.getUserId(), user);

In this way, you can search directly for the userId you need:

User userToModify = userMap.remove(idToModify);
userToModify.setUsername("new name");
userToModify.setUserId(54);
userMap.put(user.getUserId(), userToModify);

If you need to find object only by one field (userId, in this case), a Map is far more efficient and easy to use (and to maintain).

like image 26
javatutorial Avatar answered Oct 12 '22 15:10

javatutorial


 for(User user : userList) {
    if(user.getId == 2) {
        user.setUsername("newUsername")
    }
}
like image 22
i23 Avatar answered Oct 12 '22 14:10

i23