最代码官方
2016-04-08 18:56:10
原证
java将List的数据转换为N列的算法演变
最近遇到一个安卓客户端的需求,需要将服务端返回的json list的数据转换为n列m行的需求,算法有几次迭代,总算趋于完美,给牛牛们分享下:
转换为2列的算法:
Column column = null; for (int i = 0; i < items.size(); i++) { Item _item = items.get(i); if (i % 2 == 0) { column = new Column(); column.setColumn1(_item); columns.add(column); } else { column.setColumn2(_item); } } for (int i = 0; i < columns.size(); i++) { System.out.println(columns.get(i)); }
运行结果:
----------------
1 2
3 4
5 6
7 8
9
----------------
2.转换为3列的算法:
List<Column3> column3s = new ArrayList<Column3>(); Column3 column3 = null; for (int i = 0; i < items.size(); i++) { Item _item = items.get(i); int idx = i % 3;// 算余数 int div = i / 3;// 算商 if (idx == 0) { column3 = new Column3(); column3.setColumn1(_item); column3s.add(column3); } else { column3 = column3s.get(div); idx++;// 偏移1 if (idx == 2) { column3.setColumn2(_item); } else if (idx == 3) { column3.setColumn3(_item); } } } for (int i = 0; i < column3s.size(); i++) { System.out.println(column3s.get(i)); } System.out.println("----------------");
运行结果:
----------------
1 2 3
4 5 6
7 8 9
----------------
3.转换为n列的算法:
List<ColumnN> columnNs = new ArrayList<ColumnN>(); int n = 4;//列数,可以随意指定 ColumnN columnN = null; for (int i = 0; i < items.size(); i++) { Item _item = items.get(i); int idx = i % n;// 算余数 int div = i / n;// 算商 if (idx == 0) { columnN = new ColumnN(n); columnN.getColumnNs().add(0, _item); columnNs.add(columnN); } else { columnN = columnNs.get(div); columnN.getColumnNs().add(idx, _item); } } for (int i = 0; i < columnNs.size(); i++) { System.out.println(columnNs.get(i)); }
运行结果:
----------------
1 2 3 4
5 6 7 8
9
----------------
完整算法请下载文件。
猜你喜欢
请下载代码后再发表评论
相关代码
最近下载
最近浏览
微信网友_6040315240812544 LV8
2022年10月20日
何俊霖 LV2
2021年11月3日
无花空折枝 LV9
2021年6月28日
天险无涯 LV15
2021年4月21日
zxmiii LV3
2021年3月16日
纳木措
2021年1月12日
暂无贡献等级
javaZheng1 LV6
2021年1月12日
yuzhiyuan1977 LV2
2021年1月5日
忘记了很多 LV2
2020年8月27日
1204820258 LV6
2020年8月4日