您的位置:首页 > 其它

ArrayList<T>数组转换为二维数组

2016-02-08 11:57 477 查看
因为项目需求,需要将一个List<T>泛型对象转换成二维数组,如,一个将一个List<Medicine>转换为一个二维数组。

1.首先看测试类吧:

package com.bzjm.test;

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

import com.bzjm.dao.MedicineDAO;
import com.bzjm.pojo.Medicine;
import com.zml.utils.DataUtils;

/**
* @author 郑明亮
* @Time:2016年1月30日 下午8:35:39
* @version 1.0
*/
public class TestDao {

public static void main(String[] args) {
MedicineDAO medicineDAO=new MedicineDAO();
//		List<Medicine> list=medicineDAO.querysuitability("123");
List<Medicine> list =getList();

String string[] =list.get(0).toString().split(",");
System.out.println("Medicine对象转换为字符串:"+list.get(0).toString());
System.out.println("二维数组的第二维的大小:"+string.length);

Object [][]o=DataUtils.toArray(list);

for(int i = 0;i<list.size();i++ ){
for(int j =i; j<string.length;j++){
System.out.println(o[i][j]);
}
}

}

public static List<Medicine> getList(){
List<Medicine> list = new ArrayList<Medicine>();

for (int i = 0; i < 3; i++) {
Medicine medicine =  new Medicine();
medicine.setMid(i);
medicine.setMname("mname:"+i);
medicine.setMattention("mattention:"+i);
medicine.setMingredient("mingredient:"+i);
medicine.setMnoEffect("mnoEffect:"+i);
medicine.setMprice("mprice:"+i);
medicine.setMsuitability("msuitability:"+i);
medicine.setMusage("musage:"+i);
list.add(medicine);

}
return list;

}
}




可以看到,list.get(0).toString()中数据的字段是由逗号隔开的,我们则可以通过split(",")将其分割为一个数组,然后获取数组的长度,就知道Medicine这个对象一共有几个成员变量了,拿到这个值,在动态分配二维数组空间的时候,就可以进行动态分配了

2.List《Medicine》转换为二维数组的工具类

package com.zml.utils;

import java.util.List;

import com.bzjm.pojo.Medicine;
import com.google.gson.reflect.TypeToken;

/**
* @author 郑明亮
* @Time:2016年2月8日 上午10:53:33
* @version 1.0
*/
public class DataUtils {

public DataUtils() {
// TODO Auto-generated constructor stub
}
public static <T> Object[][]  toArray(List<T> data){
//data.get(0).toString().split(",").length相信大家应该可以理解的,这个是二维数组第二维的大小,如果不填写,则会报空指针的错误;
//如果填写具体值 的话,就不能起到动态加载的作用了,这个值不应该是固定的,应该是可变的。
//动态分配一个二维数组的
Object[][] o=new Object[data.size()][data.get(0).toString().split(",").length];
for (int i = 0; i < data.size(); i++) {
Medicine medicine=(Medicine) data.get(i);
o[i][0]=medicine.getMid();
o[i][1]=medicine.getMname();
o[i][2]=medicine.getMingredient();
o[i][3]=medicine.getMsuitability();
o[i][4]=medicine.getMusage();
o[i][5]=medicine.getMnoEffect();
o[i][6]=medicine.getMattention();
o[i][7]=medicine.getMprice();

}
return o;
}

}

(本想致力于实现一个通用工具类,但是没想到更好的办法,如果读者有更好的办法可以实现通用List<T>转换为二维数组的话,请留言回复哦,虽然有一种方法可能比较麻烦可以实现,但希望大神能拿出更简洁更好的方法。)

3.Medicine类

package com.bzjm.pojo;

/**
* Medicine entity. @author MyEclipse Persistence Tools
*/

/**
* @author Adayan
*
*/
/**
* @author 郑明亮
* @Time:2016年1月30日 下午7:07:43
* @version 1.0
*/
public class Medicine implements java.io.Serializable {

// Fields

private Integer mid;
private String mname;
private String mingredient;//成分
private String msuitability;//适用性
private String musage;//适用,用法
private String mnoEffect;
private String mattention;//注意事项
private String mprice;

// Constructors

/** default constructor */
public Medicine() {
}

/** full constructor */
public Medicine(String mname, String mingredient, String msuitability,
String musage, String mnoEffect, String mattention, String mprice) {
this.mname = mname;
this.mingredient = mingredient;
this.msuitability = msuitability;
this.musage = musage;
this.mnoEffect = mnoEffect;
this.mattention = mattention;
this.mprice = mprice;
}

// Property accessors

public Integer getMid() {
return this.mid;
}

public void setMid(Integer mid) {
this.mid = mid;
}

public String getMname() {
return this.mname;
}

public void setMname(String mname) {
this.mname = mname;
}

public String getMingredient() {
return this.mingredient;
}

public void setMingredient(String mingredient) {
this.mingredient = mingredient;
}

public String getMsuitability() {
return this.msuitability;
}

public void setMsuitability(String msuitability) {
this.msuitability = msuitability;
}

public String getMusage() {
return this.musage;
}

public void setMusage(String musage) {
this.musage = musage;
}

public String getMnoEffect() {
return this.mnoEffect;
}

public void setMnoEffect(String mnoEffect) {
this.mnoEffect = mnoEffect;
}

public String getMattention() {
return this.mattention;
}

public void setMattention(String mattention) {
this.mattention = mattention;
}

public String getMprice() {
return this.mprice;
}

public void setMprice(String mprice) {
this.mprice = mprice;
}

/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Medicine [mid=" + mid + ", mname=" + mname + ", mingredient="
+ mingredient + ", msuitability=" + msuitability + ", musage="
+ musage + ", mnoEffect=" + mnoEffect + ", mattention="
+ mattention + ", mprice=" + mprice + "]";
}

}

如果,您认为这篇博客让您有些收获,不妨点击一下【顶】。


如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。


因为,我的热情需要您的肯定和支持。


感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: