为什么元素不按给定的顺序添加到java中的arraylist

时间:2017-04-05 03:55:03

标签: java list arraylist

在其中一个测试方法中,我有一个名为modifiedRanges的List,其中包含多个列表。我编写了以下代码,以便按顺序将元素(List s)添加到根List(modifiedRanges)。

 List<List<String>> modifiedRanges = new ArrayList<>();
        List<String> listRange1 = Arrays.asList("45,50/45,53");
        List<String> listRange2 = Arrays.asList("44,49/44,52");
        List<String> listRange3 = Arrays.asList("819,827/819,829", "901,912/903,916", "1078,1098/1082,1107",
                "1140,1156/1149,1155", "1162,1168/1161,1166", "1276,1281/1274,1287", "1331,1336/1337,1367");
        List<String> listRange4 = Arrays.asList("16,26/16,29", "57,60/60,71");

        modifiedRanges.add(listRange1);
        modifiedRanges.add(listRange2);
        modifiedRanges.add(listRange3);
        modifiedRanges.add(listRange4);

但是当我打印modifiedRanges List时,顺序与我添加的元素不完全相同(在Intellij IDEA中作为测试用例运行)

输出:

[[45,50/45,53], [44,49/44,52], [16,26/16,29, 57,60/60,71], [819,827/819,829, 901,912/903,916, 1078,1098/1082,1107, 1140,1156/1149,1155, 1162,1168/1161,1166, 1276,1281/1274,1287, 1331,1336/1337,1367]]

我甚至通过提及相关索引添加了元素,但结果仍然相同

            modifiedRanges.add(0,listRange1);
            modifiedRanges.add(1,listRange2);
            modifiedRanges.add(2,listRange3);
            modifiedRanges.add(3,listRange4);

如何解决这个问题,以便我可以按正确顺序获取元素

[[45,50/45,53], [44,49/44,52], [819,827/819,829, 901,912/903,916, 1078,1098/1082,1107, 1140,1156/1149,1155, 1162,1168/1161,1166, 1276,1281/1274,1287, 1331,1336/1337,1367], [16,26/16,29, 57,60/60,71]]

修改 这是测试用例的完整代码片段

@Test
    public void testGetFilesChangedAndModifyingLineRanges() throws CodeQualityMetricsException {
        SdkGitHubClient sdkGitHubClient = new SdkGitHubClient(githubToken);
        Map<String, List<String>> fileNamesAndPatches = sdkGitHubClient.getFilesChanged
                ("wso2/carbon-apimgt", "eaa45529cbabc5f30a2ffaa4781821ad0a5223ab");
        List<String> fileChanged = new ArrayList<>();
        fileChanged.add("features/apimgt/org.wso2.carbon.apimgt.publisher.feature/src/main" +
                "/resources/publisher/site/themes/wso2/templates/sso/logout/template.jag");
        fileChanged.add("features/apimgt/org.wso2.carbon.apimgt.store" +
                ".feature/src/main/resources/store/site/themes/wso2" +
                "/templates/sso/logout/template.jag");
        fileChanged.add("components/sso-hostobject/org.wso2.carbon.hostobjects" +
                ".sso/src/main/java/org/wso2/carbon/hostobjects/" +
                "sso/internal/SessionInfo.java");
        fileChanged.add("components/sso-hostobject/org.wso2.carbon.hostobjects" +
                ".sso/src/main/java/org/wso2/carbon/hostobjects/" +
                "sso/SAMLSSORelyingPartyObject.java");

        List<String> fileNames = fileNamesAndPatches.get("fileNames");
        assertEquals("Files changed received from API response must be same as the Set of " +
                "filesChanged", fileChanged, fileNames);
        //testing  saveRelaventEditLineNumbers method
        List<List<String>> modifiedRanges = new ArrayList<>();
        List<String> listRange1 = Arrays.asList("45,50/45,53");
        List<String> listRange2 = Arrays.asList("44,49/44,52");
        List<String> listRange3 = Arrays.asList("819,827/819,829", "901,912/903,916", "1078,1098/1082,1107",
                "1140,1156/1149,1155", "1162,1168/1161,1166", "1276,1281/1274,1287", "1331,1336/1337,1367");
        List<String> listRange4 = Arrays.asList("16,26/16,29", "57,60/60,71");
        modifiedRanges.add(listRange1);
        modifiedRanges.add(listRange2);
        modifiedRanges.add(listRange3);
        modifiedRanges.add(listRange4);

        List<String> patchString = fileNamesAndPatches.get("patchString");
        ChangesFinder changesFinder = new ChangesFinder();
        changesFinder.saveRelaventEditLineNumbers(fileNames, patchString);
        assertEquals("Modified line ranges received from the method must be equal to the hardcoded " +
                "modifiedRanges list", modifiedRanges, changesFinder.changedLineRanges);

    }

0 个答案:

没有答案