连续的数据用横杠链接,最后将所有数据用逗号连接输出。

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();
    }
}