有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java逻辑问题以特定格式显示数字

我有一个问题,正在努力解决它。我需要在java中以某种格式排列数字。 例如,我有一个对象组织的arraylist。Org具有orgId、AppYear、OrgName、OrgCityState等属性。我填写了如下列表:

public List<Org> createList()
{
    List<Org> lst = new ArrayList<>();
    
    Org org = new Org();
    org.setOrgId(1l);
    org.setAppYear("1995");
    org.setOrgName("abc");
    org.setOrgCityState("Ahd Gujarat");
    lst.add(org);
    org = new Org();
    org.setOrgId(1l);
    org.setAppYear("1996");
    org.setOrgName("abc");
    org.setOrgCityState("Ahd Gujarat");
    lst.add(org);
    
    org = new Org();
    org.setOrgId(1l);
    org.setAppYear("1997");
    org.setOrgName("abc");
    org.setOrgCityState("Ahd Gujarat");
    lst.add(org);
    
    org = new Org();
    org.setOrgId(1l);
    org.setAppYear("2000");
    org.setOrgName("abc");
    org.setOrgCityState("Ahd Gujarat");
    lst.add(org);
    
    org = new Org();
    org.setOrgId(1l);
    org.setAppYear("2002");
    org.setOrgName("abc");
    org.setOrgCityState("Ahd Gujarat");
    lst.add(org);
    
    org = new Org();
    org.setOrgId(1l);
    org.setAppYear("2004");
    org.setOrgName("abc");
    org.setOrgCityState("Ahd Gujarat");
    lst.add(org);
    
    org = new Org();
    org.setOrgId(1l);
    org.setAppYear("2005");
    org.setOrgName("abc");
    org.setOrgCityState("Ahd Gujarat");
    lst.add(org);
    
    org = new Org();
    org.setOrgId(2l);
    org.setAppYear("2002");
    org.setOrgName("abc");
    org.setOrgCityState("Baroda Gujarat");
    lst.add(org);
    
    org = new Org();
    org.setOrgId(2l);
    org.setAppYear("2004");
    org.setOrgName("abc");
    org.setOrgCityState("Baroda Gujarat");
    lst.add(org);
    
    
    org = new Org();
    org.setOrgId(2l);
    org.setAppYear("2005");
    org.setOrgName("abc");
    org.setOrgCityState("Baroda Gujarat");
    lst.add(org);
    
    
    return lst;
    

}


             

正如你在数据中看到的,只有AppYear和OrgId是不同的。我需要根据连续的一年来整理这些数据。例如,假设年份为1995199619972000200320042052008。。它应该显示出

 AyyYear                   | OrgID | OrgName | CityState
1995-1997,2000,2003-2005,2008 |  1    | abc     | ahd Gujarat
2002,2004-2005                |  2    | abc     | Baroda Gujarat.

所以基本上需要在一定范围内计算不同的年份,如上所示。 我试图创造逻辑,但没有成功。我用两个循环来比较每个组织。对于同一个组织,我试图把这些年具体化,但似乎它凌驾于它之上,而不是以这种形式出现。当组织发生变化时,我很难打破循环并集中数据。 希望,我提供了正确的信息。 乔丹


共 (1) 个答案

  1. # 1 楼答案

    你是说像这样

    static String formatRanges(int... values) {
        StringBuilder buf = new StringBuilder();
        for (int i = 0, j; i < values.length; i++) {
            for (j = i; j + 1 < values.length && values[j] + 1 == values[j + 1]; j++);
            if (i != 0) buf.append(',');
            buf.append(values[i]);
            if (j > i) buf.append('-').append(values[i = j]);
        }
        return buf.toString();
    }
    

    测试

    System.out.println(formatRanges(2,3,4,7,10,11,12,15,18));
    

    输出

    2-4,7,10-12,15,18