ArrayList<T>数组转换为二维数组
2016-02-08 11:57
477 查看
因为项目需求,需要将一个List<T>泛型对象转换成二维数组,如,一个将一个List<Medicine>转换为一个二维数组。
1.首先看测试类吧:
可以看到,list.get(0).toString()中数据的字段是由逗号隔开的,我们则可以通过split(",")将其分割为一个数组,然后获取数组的长度,就知道Medicine这个对象一共有几个成员变量了,拿到这个值,在动态分配二维数组空间的时候,就可以进行动态分配了
2.List《Medicine》转换为二维数组的工具类
(本想致力于实现一个通用工具类,但是没想到更好的办法,如果读者有更好的办法可以实现通用List<T>转换为二维数组的话,请留言回复哦,虽然有一种方法可能比较麻烦可以实现,但希望大神能拿出更简洁更好的方法。)
3.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!
相关文章推荐
- ubuntu ibus pinyin输入法异常
- 编程世界,我的世界。
- ADO.NET之command录入数据(视图版)
- NYOJ-12-喷水装置(二)
- 解决cocoapods在64位iOS7系统以下的警告问题
- PadLeft函数
- Django工程读取mongodb并使用分页器
- 删除海量数据之全表删除与部分删除
- HDU ACM 1081 To The Max->最大子矩阵
- 除夕夜
- 造轮子:论Top与ROW_NUMBER读取第一页的效率问题
- SQL变量与全局变量
- Java多线程编程总结 java 1.6版
- 使用Linux操作系统命令检查服务器主板上每个内存插槽的内存大小
- Codeforces Round #342 (Div. 2) A
- 安卓-APP安装后多个图标的解决
- Fragment生命周期
- Codeforces Round #342 (Div. 2) C. K-special Tables 构造
- 【翻译自mos文章】在使用Linux大页内存的配置中,使用drop_cache时导致的ORA-600 [KGHLKREM1]问题
- 查看4k对齐,激活.net framework 3.5