Java编程:
集合中存有Integer类型的数据,写一个方法:把连续的数据用横杠链接,最后将所有数据用逗号连接输出。
例:1 2 3 7 8 10 14 返回:1-3,7-8,10,14
求一个简单点儿的做法,感谢
代码如下。
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 7, 8, 10, 14);
Integer first = list.get(0);
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(first);
Integer temp = null;
for (int i = 0; i < list.size() -1; i++) {
Integer a = list.get(i);
Integer b = list.get(i + 1);
if (b.equals(a + 1)) {
continue;
}
if (!a.equals(temp)) {
stringBuffer.append("-");
stringBuffer.append(a);
}
stringBuffer.append(",");
stringBuffer.append(b);
temp = b;
}
System.out.println(stringBuffer);
}
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(7);
list.add(8);
list.add(10);
list.add(14);
System.out.println(formatList(list)); // 输出:1-3,7-8,10,14
}
public static String formatList(List<Integer> list) {
StringBuilder sb = new StringBuilder();
int start = -1, end = -1;
for (int i = 0; i < list.size(); i++) {
if (start == -1) {
start = end = list.get(i);
} else {
if (list.get(i) == end + 1) {
end = list.get(i);
} else {
if (start == end) {
sb.append(start);
} else {
sb.append(start).append("-").append(end);
}
sb.append(",");
start = end = list.get(i);
}
}
}
if (start != -1) {
if (start == end) {
sb.append(start);
} else {
sb.append(start).append("-").append(end);
}
}
return sb.toString();
}
}