问个算法的问题 我现在有数据list{1:2,1:3,1:4,2:5,2:6,2:7} 现在要进行分组显示成 list{1:2=3=4,2:5=6=7}这样的数据 谁给写个方法啊我写了两个小时没搞出来我是写flex 谁能写个方法用下大神 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个事算法?我写了一个针对你这个题目的代码,但是没有半点算法的概念public static void main(String[] args) { //我现在有数据list{1:2,1:3,1:4,2:5,2:6,2:7} //现在要进行分组显示成 list{1:2=3=4,2:5=6=7}这样的数据 List<String> list = new ArrayList<String>(); list.add(0, "1:2"); list.add(1, "1:3"); list.add(2, "1:4"); list.add(3, "2:5"); list.add(4, "2:6"); list.add(5, "2:7"); List<String> list1 = new ArrayList<String>(); List<String> list2 = new ArrayList<String>(); for(int i=0;i<list.size();i++){ if(list.get(i).contains("1:")) list1.add(list.get(i).substring(2)); else if(list.get(i).contains("2:")) list2.add(list.get(i).substring(2)); } list.clear(); String str = ""; for(int i=0;i<list1.size();i++){ str += list1.get(i); } System.out.println(str); list.add(0,str); String str1 = ""; for(int i=0;i<list2.size();i++){ str1 += list2.get(i); } System.out.println(str1); list.add(0,str1); } 同楼上所说public static void main(String[] args) { List<String> oL = new ArrayList<String>(); oL.add("1:2"); oL.add("1:3"); oL.add("1:4"); oL.add("1:5"); oL.add("2:2"); oL.add("2:3"); oL.add("2:4"); oL.add("2:5"); oL.add("3:2"); oL.add("3:3"); oL.add("3:4"); oL.add("3:5"); List<String> oR = new ArrayList<String>(); String a = oL.get(0); String t = a.substring(0, a.indexOf(":")); for (int i = 1; i < oL.size(); i++) { String o = oL.get(i); String s = o.substring(0, o.indexOf(":")); String e = o.substring(o.indexOf(":") + 1); if (t.equals(s)) { a += "=" + e; } else { oR.add(a); a = o; t = s; } if (i == oL.size() - 1) { oR.add(a); } } System.out.println(oR);} list{1:2,1:3,1:4,2:5,2:6,2:7} => list{1:2=3=4,2:5=6=7}观察可以发现1:, 2:, ..., n: 作为key,而后面的部分是value的内容,所以可以用map来处理这个问题,如果要有序,可以使用TreeMap 求解分割元素并打印。。。 LinkedList学习(双向循环链表) 问个思想问题 为什么服务端调用SocketChannel.close之后TCP连接仍然存在? JAVA 和C(或C++) 如何混合编程; 两个数字交换值!!! \t分割太大,还有什么可以用的吗? 谁帮我调试一下啊? 求资料,JBUILDER如何开发调试WAP 问两个问题,关于JTable和JTree,100分相送 新手学习,绘制自定义控件问题 求大神指点:为什么在命令提示符下可以运行java但不能运行javac?
我写了一个针对你这个题目的代码,但是没有半点算法的概念public static void main(String[] args) {
//我现在有数据list{1:2,1:3,1:4,2:5,2:6,2:7}
//现在要进行分组显示成 list{1:2=3=4,2:5=6=7}这样的数据
List<String> list = new ArrayList<String>();
list.add(0, "1:2");
list.add(1, "1:3");
list.add(2, "1:4");
list.add(3, "2:5");
list.add(4, "2:6");
list.add(5, "2:7");
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
for(int i=0;i<list.size();i++){
if(list.get(i).contains("1:"))
list1.add(list.get(i).substring(2));
else if(list.get(i).contains("2:"))
list2.add(list.get(i).substring(2));
}
list.clear();
String str = "";
for(int i=0;i<list1.size();i++){
str += list1.get(i);
}
System.out.println(str);
list.add(0,str);
String str1 = "";
for(int i=0;i<list2.size();i++){
str1 += list2.get(i);
}
System.out.println(str1);
list.add(0,str1);
}
List<String> oL = new ArrayList<String>();
oL.add("1:2");
oL.add("1:3");
oL.add("1:4");
oL.add("1:5");
oL.add("2:2");
oL.add("2:3");
oL.add("2:4");
oL.add("2:5");
oL.add("3:2");
oL.add("3:3");
oL.add("3:4");
oL.add("3:5"); List<String> oR = new ArrayList<String>();
String a = oL.get(0);
String t = a.substring(0, a.indexOf(":")); for (int i = 1; i < oL.size(); i++) {
String o = oL.get(i);
String s = o.substring(0, o.indexOf(":"));
String e = o.substring(o.indexOf(":") + 1);
if (t.equals(s)) {
a += "=" + e;
} else {
oR.add(a);
a = o;
t = s;
}
if (i == oL.size() - 1) {
oR.add(a);
}
} System.out.println(oR);
}
观察可以发现1:, 2:, ..., n: 作为key,而后面的部分是value的内容,所以可以用map来处理这个问题,如果要有序,可以使用TreeMap