ArrayList中的双括号

时间:2016-09-08 14:31:49

标签: java arraylist

我在Java中创建了一个ArrayList

List<String> listValuesFromMap = new ArrayList<String>();

我使用entry.getValue()方法填充值:

listValuesFromMap.add((String) entry.getValue().toString());

我有这样的事情:

"names" : ["[name1, name2, name3]"]

如何使用引号删除这些额外括号以仅获取:

[name1, name2, name3]

代码的全部内容:

@SuppressWarnings("unchecked")

Map<String, Object> attributes = (Map<String, Object>) input
                        .getValueByField(ATTRIBUTES_FIELD);

Document mongoDoc= new Document();
List<String> listValuesFromMap = new ArrayList<String>();

for (Map.Entry<String, Object> entry : attributes.entrySet()) {
        if (entry.getKey().contains("names")) {

            JSONArray jsonArray = new JSONArray();
            listValuesFromMap.add((String) entry.getValue().toString());

            for (String item : listValuesFromMap) {
                jsonArray.add(item.toString());
            }
            mongoDoc.put(entry.getKey(), jsonArray);
        }
        else {
            listValuesFromMap.add((String) entry.getValue().toString());
            mongoDoc.put(entry.getKey(), entry.getValue());
        }
}

我认为问题出在listValuesFromMap.add((String) entry.getValue().toString());行中 - 来自entry.getValue()的值已经在[]和add方法中放置了额外的[]。有谁知道如何避免这些额外的括号?

1 个答案:

答案 0 :(得分:1)

我仍然不确定我是否足够回答。我会试试。

据我了解,双括号来自于ArrayList中的ArrayList。这对于许多目的来说都很好。但是,要避免使用双括号,您需要将ArrayList放入ArrayList,或者在打印之前将其取出(或者您需要使用它)。对于第一个选项,以下是如何将ArrayList的元素单独添加到listValuesFromMap而不是仅添加列表:

    for (Map.Entry<String, Object> entry : attributes.entrySet()) {
        Object value = entry.getValue();
        if (entry.getKey().contains("names")) {

            JSONArray jsonArray = new JSONArray();
            for (Object name : (ArrayList<?>) value) {
                listValuesFromMap.add(name.toString());
            }

            for (String item : listValuesFromMap) {
                jsonArray.add(item);
            }
            mongoDoc.put(entry.getKey(), jsonArray);
        } else {
            listValuesFromMap.add(value.toString());
            mongoDoc.put(entry.getKey(), entry.getValue());
        }
    }

您也可以考虑直接从jsonArray而不是value将这些项目放入listValuesForMap;但是,这不包括在外部for循环的先前迭代中添加到列表中的值,因此它可能不是您想要的。

对于第二个选项,listValuesFromMap.get(0)将返回列表的第一个元素,即您放在其中的ArrayList。但是,我认为这不是你需要的。