public class ListUtil {
/**
* 将list中对象的两个属性批量转换至map中(支持字符串属性)
* @param list
* @param listProp
* @param <T>
* @return
*/
public static <T> Map<String, String> listPropToStrMap(List<T> list, String[] listProp) {
Map<String, String> map = new HashMap<String, String>();
String fieldOne = listProp[0]; // 属性名称1
String fieldTwo = listProp[1]; // 属性名称2
Class clazz = list.get(0).getClass();
try {
Field field1 = clazz.getDeclaredField(fieldOne);
Field field2 = clazz.getDeclaredField(fieldTwo);
field1.setAccessible(true);
field2.setAccessible(true);
for (T t : list) {
map.put(field1.get(t) + "", field2.get(t) + "");
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
}
测试方法:
public class ListUtilTest {
/**
* 测试将list中对象的属性转换至字符串Map中
*/
@Test
public void testListPropToStrMap() {
List<Student> studentList = new ArrayList<Student>();
Student s = new Student();
s.setSid("101");
s.setSname("张三");
studentList.add(s);
s = new Student();
s.setSid("102");
s.setSname("李四");
studentList.add(s);
s = new Student();
s.setSid("103");
s.setSname("王五");
studentList.add(s);
Map<String, String> map1 = ListUtil.listPropToStrMap(studentList, new String[]{"sid", "sname"});
Map<String, String> map2 = ListUtil.listPropToStrMap(studentList, new String[]{"sname", "sid"});
System.out.println(map1);
System.out.println(map2);
}
}
Student.java
public class Student {
private String sid; // 学生id
private String sname; // 学生姓名
private int sage; // 学生年龄
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getSage() {
return sage;
}
public void setSage(int sage) {
this.sage = sage;
}
}