最代码官方
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日




