基于列为字符串的用户存储数据的好方法?

Good way to store data based on user listed as a string?

我有一个字符串数组列表。这些字符串包含三个信息。信息本身并不重要,但字符串列表的布局如下:

"24,requested,john@email.com"
"22,sent,jane@email.com"
"67,pending,john@email.com"

我想遍历数组列表并根据用户电子邮件存储字符串的前两部分。例如字符串:

"24,requested,john@email.com" 

我想根据用户电子邮件“john@email.com”存储“24”和“请求”。由于字符串的长度不同,我知道我可以用“,”分割字符串。只是不知道按照我解释的方式用什么数据结构来存储信息。

这只是许多其他可用方法中的一种。


package com.company;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

class UserInfo {
    int numberId;
    String status;
    String email;

    public UserInfo(int numberId, String status, String email) {
        this.numberId = numberId;
        this.status = status;
        this.email = email;
    }

    // getters and setters

    @Override
    public String toString() {
        return "UserInfo{" +
                "numberId=" + numberId +
                ", status='" + status + '\'' +
                ", email='" + email + '\'' +
                '}';
    }

    //...
}

public class Test {

    public static void main(String[] args) {
        String[] entries = {"24,requested,john@email.com", "22,sent,jane@email.com", "67,pending,john@email.com" };

       List<UserInfo> userInfos = new ArrayList<>();

        for (String line : entries) {

            String[] splittedLine = line.split(",");

            String email = splittedLine[2];
            int numberId = Integer.parseInt(splittedLine[0]);
            String status = splittedLine[1];

            UserInfo u = new UserInfo(numberId, status, email);

            userInfos.add(u);
        }

        // you can store on a list
        System.out.println(userInfos);
        // [UserInfo{numberId=24, status='requested', email='john@email.com'}, UserInfo{numberId=22, status='sent', email='jane@email.com'}, UserInfo{numberId=67, status='pending', email='john@email.com'}]

        // or you can group the userInfos by a property
        Map<String, List<UserInfo>> mapUsersByEmail = userInfos.stream().collect(Collectors.groupingBy(UserInfo::getEmail));
        System.out.println(mapUsersByEmail);
        // {
        //   jane@email.com=[
        //     UserInfo{numberId=22, status='sent', email='jane@email.com'}
        //   ],
        //   john@email.com=[
        //     UserInfo{numberId=24, status='requested', email='john@email.com'}, UserInfo{numberId=67, status='pending', email='john@email.com'}
        //   ]
        // }


    }
}