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.缺陷:有多少个属性列都会循环多少次,数据量不大的业务场景可以这么实现,具体方案还需具体分析吧