从列表中打印1行,然后从同一列表中打印第二行,而不会混合数据

时间:2014-02-24 11:54:43

标签: java

我有两个HashMaps;

  1. 一个HashMap收集deviceIds(整数)和坐标(lat,long)
  2. 第二个HashMap还收集deviceIds以及deviceId指向的lat,long坐标的位置(int)
  3. 这是我到目前为止所做的事情;

    int currentPosition = 0;
    for(Map.Entry<Integer, List<CoordinatesParams>> entry : deviceIdToCoordMap.entrySet())
    {
        for(CoordinatesParams cps: entry.getValue())
        {
            deviceCoordPosition.put(entry.getKey(), currentPosition);
            currentPosition = (currentPosition + 1) % entry.getValue().size();
            for(Map.Entry<Integer, Integer> coordPos : deviceCoordPosition.entrySet())
            {
                System.out.println("Device: " + coordPos.getKey() + " -> Position: " + coordPos.getValue() + " -> Coordinates (" + cps.getLatitude() + ", " + cps.getLongitude() + ")");
            }
        }
    }
    

    运行此代码时,会打印以下内容;

    Device: 440 -> Position: 0 -> Coordinates (51.51092066, -0.14513969)
    Device: 440 -> Position: 1 -> Coordinates (51.51073703, -0.1455312)
    Device: 440 -> Position: 2 -> Coordinates (51.51059347, -0.14583707)
    Device: 440 -> Position: 3 -> Coordinates (51.51047662, -0.1461026)
    Device: 440 -> Position: 4 -> Coordinates (51.51049331, -0.14613747)
    Device: 440 -> Position: 5 -> Coordinates (51.51048997, -0.14616698)
    Device: 440 -> Position: 6 -> Coordinates (51.51040651, -0.14641106)
    Device: 440 -> Position: 7 -> Coordinates (51.51035643, -0.14649421)
    Device: 440 -> Position: 8 -> Coordinates (51.51032972, -0.14652103)
    Device: 440 -> Position: 9 -> Coordinates (51.51027296, -0.14666057)
    Device: 440 -> Position: 10 -> Coordinates (51.51022789, -0.1467517)
    Device: 440 -> Position: 11 -> Coordinates (51.51021286, -0.14695287)
    Device: 440 -> Position: 12 -> Coordinates (51.51020285, -0.14709234)
    Device: 440 -> Position: 13 -> Coordinates (51.51021119, -0.14715671)
    Device: 440 -> Position: 14 -> Coordinates (51.51039983, -0.14728009)
    Device: 440 -> Position: 15 -> Coordinates (51.51031302, -0.14770388)
    Device: 440 -> Position: 16 -> Coordinates (51.51023081, -0.14809616)
    Device: 440 -> Position: 17 -> Coordinates (51.51037396, -0.14816656)
    Device: 440 -> Position: 18 -> Coordinates (51.51053838, -0.1482477)
    Device: 440 -> Position: 19 -> Coordinates (51.51074914, -0.14835298)
    Device: 440 -> Position: 20 -> Coordinates (51.51081507, -0.14799356)
    Device: 440 -> Position: 21 -> Coordinates (51.51090271, -0.14752015)
    Device: 440 -> Position: 22 -> Coordinates (51.51114643, -0.14763012)
    Device: 440 -> Position: 23 -> Coordinates (51.5114227, -0.14775619)
    Device: 440 -> Position: 24 -> Coordinates (51.51160215, -0.14783665)
    Device: 440 -> Position: 25 -> Coordinates (51.51171149, -0.147264)
    Device: 440 -> Position: 26 -> Coordinates (51.51179829, -0.14679461)
    Device: 440 -> Position: 27 -> Coordinates (51.51195938, -0.14597654)
    Device: 440 -> Position: 28 -> Coordinates (51.51213215, -0.14510482)
    Device: 440 -> Position: 29 -> Coordinates (51.51223063, -0.14473334)
    Device: 440 -> Position: 30 -> Coordinates (51.5123045, -0.14447115)
    Device: 440 -> Position: 31 -> Coordinates (51.51207831, -0.14425389)
    Device: 440 -> Position: 32 -> Coordinates (51.51192098, -0.14410034)
    Device: 440 -> Position: 33 -> Coordinates (51.51178786, -0.14396623)
    Device: 440 -> Position: 34 -> Coordinates (51.51166058, -0.14383413)
    Device: 440 -> Position: 35 -> Coordinates (51.51149532, -0.14366381)
    Device: 440 -> Position: 36 -> Coordinates (51.51131795, -0.14348007)
    Device: 440 -> Position: 37 -> Coordinates (51.51114768, -0.14330506)
    Device: 440 -> Position: 38 -> Coordinates (51.51108133, -0.1434841)
    Device: 440 -> Position: 39 -> Coordinates (51.5109987, -0.1436866)
    Device: 440 -> Position: 40 -> Coordinates (51.51094236, -0.14381736)
    Device: 440 -> Position: 41 -> Coordinates (51.51105087, -0.1439441)
    Device: 440 -> Position: 42 -> Coordinates (51.51122406, -0.14414862)
    Device: 440 -> Position: 43 -> Coordinates (51.51129876, -0.14423512)
    Device: 440 -> Position: 44 -> Coordinates (51.51131169, -0.14427468)
    Device: 440 -> Position: 45 -> Coordinates (51.51130418, -0.14431558)
    Device: 440 -> Position: 46 -> Coordinates (51.51123699, -0.14445908)
    Device: 440 -> Position: 47 -> Coordinates (51.51112348, -0.14470249)
    Device: 440 -> Position: 48 -> Coordinates (51.5109649, -0.14504045)
    Device: 440 -> Position: 48 -> Coordinates (51.51092066, -0.14513969)
    Device: 443 -> Position: 0 -> Coordinates (51.51092066, -0.14513969)
    Device: 440 -> Position: 48 -> Coordinates (51.51073703, -0.1455312)
    Device: 443 -> Position: 1 -> Coordinates (51.51073703, -0.1455312)
    Device: 440 -> Position: 48 -> Coordinates (51.51059347, -0.14583707)
    Device: 443 -> Position: 2 -> Coordinates (51.51059347, -0.14583707)
    Device: 440 -> Position: 48 -> Coordinates (51.51047662, -0.1461026)
    Device: 443 -> Position: 3 -> Coordinates (51.51047662, -0.1461026)
    Device: 440 -> Position: 48 -> Coordinates (51.51049331, -0.14613747)
    Device: 443 -> Position: 4 -> Coordinates (51.51049331, -0.14613747)
    Device: 440 -> Position: 48 -> Coordinates (51.51048997, -0.14616698)
    Device: 443 -> Position: 5 -> Coordinates (51.51048997, -0.14616698)
    Device: 440 -> Position: 48 -> Coordinates (51.51040651, -0.14641106)
    Device: 443 -> Position: 6 -> Coordinates (51.51040651, -0.14641106)
    Device: 440 -> Position: 48 -> Coordinates (51.51035643, -0.14649421)
    Device: 443 -> Position: 7 -> Coordinates (51.51035643, -0.14649421)
    Device: 440 -> Position: 48 -> Coordinates (51.51032972, -0.14652103)
    Device: 443 -> Position: 8 -> Coordinates (51.51032972, -0.14652103)
    Device: 440 -> Position: 48 -> Coordinates (51.51027296, -0.14666057)
    Device: 443 -> Position: 9 -> Coordinates (51.51027296, -0.14666057)
    Device: 440 -> Position: 48 -> Coordinates (51.51022789, -0.1467517)
    Device: 443 -> Position: 10 -> Coordinates (51.51022789, -0.1467517)
    Device: 440 -> Position: 48 -> Coordinates (51.51021286, -0.14695287)
    Device: 443 -> Position: 11 -> Coordinates (51.51021286, -0.14695287)
    Device: 440 -> Position: 48 -> Coordinates (51.51020285, -0.14709234)
    Device: 443 -> Position: 12 -> Coordinates (51.51020285, -0.14709234)
    Device: 440 -> Position: 48 -> Coordinates (51.51021119, -0.14715671)
    Device: 443 -> Position: 13 -> Coordinates (51.51021119, -0.14715671)
    Device: 440 -> Position: 48 -> Coordinates (51.51039983, -0.14728009)
    Device: 443 -> Position: 14 -> Coordinates (51.51039983, -0.14728009)
    Device: 440 -> Position: 48 -> Coordinates (51.51031302, -0.14770388)
    Device: 443 -> Position: 15 -> Coordinates (51.51031302, -0.14770388)
    Device: 440 -> Position: 48 -> Coordinates (51.51023081, -0.14809616)
    Device: 443 -> Position: 16 -> Coordinates (51.51023081, -0.14809616)
    Device: 440 -> Position: 48 -> Coordinates (51.51037396, -0.14816656)
    Device: 443 -> Position: 17 -> Coordinates (51.51037396, -0.14816656)
    Device: 440 -> Position: 48 -> Coordinates (51.51053838, -0.1482477)
    Device: 443 -> Position: 18 -> Coordinates (51.51053838, -0.1482477)
    Device: 440 -> Position: 48 -> Coordinates (51.51074914, -0.14835298)
    Device: 443 -> Position: 19 -> Coordinates (51.51074914, -0.14835298)
    Device: 440 -> Position: 48 -> Coordinates (51.51081507, -0.14799356)
    Device: 443 -> Position: 20 -> Coordinates (51.51081507, -0.14799356)
    Device: 440 -> Position: 48 -> Coordinates (51.51090271, -0.14752015)
    Device: 443 -> Position: 21 -> Coordinates (51.51090271, -0.14752015)
    Device: 440 -> Position: 48 -> Coordinates (51.51114643, -0.14763012)
    Device: 443 -> Position: 22 -> Coordinates (51.51114643, -0.14763012)
    Device: 440 -> Position: 48 -> Coordinates (51.5114227, -0.14775619)
    Device: 443 -> Position: 23 -> Coordinates (51.5114227, -0.14775619)
    Device: 440 -> Position: 48 -> Coordinates (51.51160215, -0.14783665)
    Device: 443 -> Position: 24 -> Coordinates (51.51160215, -0.14783665)
    Device: 440 -> Position: 48 -> Coordinates (51.51171149, -0.147264)
    Device: 443 -> Position: 25 -> Coordinates (51.51171149, -0.147264)
    Device: 440 -> Position: 48 -> Coordinates (51.51179829, -0.14679461)
    Device: 443 -> Position: 26 -> Coordinates (51.51179829, -0.14679461)
    Device: 440 -> Position: 48 -> Coordinates (51.51195938, -0.14597654)
    Device: 443 -> Position: 27 -> Coordinates (51.51195938, -0.14597654)
    Device: 440 -> Position: 48 -> Coordinates (51.51213215, -0.14510482)
    Device: 443 -> Position: 28 -> Coordinates (51.51213215, -0.14510482)
    Device: 440 -> Position: 48 -> Coordinates (51.51223063, -0.14473334)
    Device: 443 -> Position: 29 -> Coordinates (51.51223063, -0.14473334)
    Device: 440 -> Position: 48 -> Coordinates (51.5123045, -0.14447115)
    Device: 443 -> Position: 30 -> Coordinates (51.5123045, -0.14447115)
    Device: 440 -> Position: 48 -> Coordinates (51.51207831, -0.14425389)
    Device: 443 -> Position: 31 -> Coordinates (51.51207831, -0.14425389)
    Device: 440 -> Position: 48 -> Coordinates (51.51192098, -0.14410034)
    Device: 443 -> Position: 32 -> Coordinates (51.51192098, -0.14410034)
    Device: 440 -> Position: 48 -> Coordinates (51.51178786, -0.14396623)
    Device: 443 -> Position: 33 -> Coordinates (51.51178786, -0.14396623)
    Device: 440 -> Position: 48 -> Coordinates (51.51166058, -0.14383413)
    Device: 443 -> Position: 34 -> Coordinates (51.51166058, -0.14383413)
    Device: 440 -> Position: 48 -> Coordinates (51.51149532, -0.14366381)
    Device: 443 -> Position: 35 -> Coordinates (51.51149532, -0.14366381)
    Device: 440 -> Position: 48 -> Coordinates (51.51131795, -0.14348007)
    Device: 443 -> Position: 36 -> Coordinates (51.51131795, -0.14348007)
    Device: 440 -> Position: 48 -> Coordinates (51.51114768, -0.14330506)
    Device: 443 -> Position: 37 -> Coordinates (51.51114768, -0.14330506)
    Device: 440 -> Position: 48 -> Coordinates (51.51108133, -0.1434841)
    Device: 443 -> Position: 38 -> Coordinates (51.51108133, -0.1434841)
    Device: 440 -> Position: 48 -> Coordinates (51.5109987, -0.1436866)
    Device: 443 -> Position: 39 -> Coordinates (51.5109987, -0.1436866)
    Device: 440 -> Position: 48 -> Coordinates (51.51094236, -0.14381736)
    Device: 443 -> Position: 40 -> Coordinates (51.51094236, -0.14381736)
    Device: 440 -> Position: 48 -> Coordinates (51.51105087, -0.1439441)
    Device: 443 -> Position: 41 -> Coordinates (51.51105087, -0.1439441)
    Device: 440 -> Position: 48 -> Coordinates (51.51122406, -0.14414862)
    Device: 443 -> Position: 42 -> Coordinates (51.51122406, -0.14414862)
    Device: 440 -> Position: 48 -> Coordinates (51.51129876, -0.14423512)
    Device: 443 -> Position: 43 -> Coordinates (51.51129876, -0.14423512)
    Device: 440 -> Position: 48 -> Coordinates (51.51131169, -0.14427468)
    Device: 443 -> Position: 44 -> Coordinates (51.51131169, -0.14427468)
    Device: 440 -> Position: 48 -> Coordinates (51.51130418, -0.14431558)
    Device: 443 -> Position: 45 -> Coordinates (51.51130418, -0.14431558)
    Device: 440 -> Position: 48 -> Coordinates (51.51123699, -0.14445908)
    Device: 443 -> Position: 46 -> Coordinates (51.51123699, -0.14445908)
    Device: 440 -> Position: 48 -> Coordinates (51.51112348, -0.14470249)
    Device: 443 -> Position: 47 -> Coordinates (51.51112348, -0.14470249)
    Device: 440 -> Position: 48 -> Coordinates (51.5109649, -0.14504045)
    Device: 443 -> Position: 48 -> Coordinates (51.5109649, -0.14504045)
    

    当结果打印出deviceId 440时,位置完全从0-48开始,但是当引入deviceId 443时,deviceId 440停留在位置48但是打印443的坐标。

    为什么会这样?如何在打印deviceId 443之前打印出打印结果?

1 个答案:

答案 0 :(得分:1)

您正在使用HashMap,这意味着当您将数据添加到集合时,数据的排序会丢失。您应该做的是查看LinkedHashMap实现。这会按照您添加数据的顺序保留数据,这可以解决您的问题。可以找到LinkedHashMap的文档here

实施例

Map<String, String> lMap = LinkedHashMap<String, String>();