有没有更优雅的方式实现这种情况的赋值

图片说明

public class Test {

    public static void main(String[] args) {
        //初始数据
        List<String> names =new ArrayList<String>();
        names.add("wbc");
        names.add("zbq");
        names.add("nmlgb");
        List<Integer> ages = new ArrayList<Integer>();
        ages.add(23);
        ages.add(24);
        ages.add(8);
        List<String> status = new ArrayList<String>();
        status.add("活的");
        status.add("活的");
        status.add("死的");
        //实际的数据 wbc -23 -活的; zbq -24 -活的 ; nmlgb -8 -死的
        //组合成对象
        List<UserInfo> userInfoList = new ArrayList<UserInfo>();
        for (int i = 0; i < names.size(); i++) {
            UserInfo userInfo = new UserInfo();
            userInfo.name = names.get(i);
            userInfo.age = ages.get(i);
            userInfo.status = status.get(i); 
            userInfoList.add(userInfo);
        }
    }

}
class UserInfo{
    String name;
    Integer age;
    String status;
}
class UserInfo{
    String name;
    Integer age;
    String status;
}

这个类写的太简单了吧,,价格构造方法,,通过构造方法一次性传入三个值,,构造后直接放入list中

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

楼主要的是优雅的实现方式,不知道这个优雅要怎么理解。是不是代码简洁更好看的意思。不知道我这样写算不算优雅。如果我写这段代码是下面这个效果,不知道楼主是否满意。

public class Myclass {

    public Myclass() {
        List<UserInfo> userInfoList = new ArrayList<UserInfo>();
        userInfoList.add(new UserInfo("wbc",23,"活的"));
        userInfoList.add(new UserInfo("zbq",24,"活的"));
        userInfoList.add(new UserInfo("nmlgb",8,"死的"));
    }
    class UserInfo{
        String name;
        Integer age;
        String status;
        public UserInfo(String name,int age,String status) {
            this.name = name;
            this.age = age;
            this.status = status;
        }
    }

}
package csdn;

/**
 * Created by leboop on 2019/1/19.
 */
public class User {
    private String name;
    private Integer age;
    private String status;

    public User() {
    }

    public User(String name, Integer age, String status) {
        this.name = name;
        this.age = age;
        this.status = status;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        User user = (User) o;

        if (name != null ? !name.equals(user.name) : user.name != null) return false;
        if (age != null ? !age.equals(user.age) : user.age != null) return false;
        return status != null ? status.equals(user.status) : user.status == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + (age != null ? age.hashCode() : 0);
        result = 31 * result + (status != null ? status.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", status='" + status + '\'' +
                '}';
    }
}

package csdn;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by leboop on 2019/1/19.
 */
public class Test {
    public static void main(String[] args) {
        String infoStr = "wbc -23 -活的; zbq -24 -活的 ; nmlgb -8 -死的";
        List<User> users = new ArrayList<User>(3);
        String[] infos = infoStr.split(";");
        for (String s : infos) {
            String[] t = s.split("-");
            User user = new User();
            user.setName(t[0].trim());
            user.setAge(Integer.parseInt(t[1].trim()));
            user.setStatus(t[2].trim());
            users.add(user);
        }
        for (User user : users) {
            System.out.println(user);
        }
    }
}

采用构造方法,或者通过字符串解析,有很多种方式,需要看具体的需求

1.之前想提问题的背景是:多列不同属性,需要按照顺序封装成一个列表对象;
2.问题是:如何对这个对象初始化进行封装能够跟优雅。ps:这几年的理解的优雅:1.可读性强;2.扩展性强(增加一列如何保证开闭原则)
3.2021年的结论:封装一个方法。List initValue1(List,List value1); 每增加一列就加一个方法,然后在main方法中调用不同的init方法
4.缺陷:有多少个属性列都会循环多少次,数据量不大的业务场景可以这么实现,具体方案还需具体分析吧