[英]Java ArrayList: Merging ArrayLists within ArrayLists to create one ArrayList
[英]Java Two ArrayLists from One ArrayList
我有一個列表,我在其中存儲2個ArrayLists。
metadataList.addAll(countryList);
metadataList.addAll(languageList);
在另一種方法中,我想訪問這兩個列表。 我正在嘗試此代碼:
List<String> countriesList = metadataValues.get(0);
List<String> languageList = metadataValues.get(1);
它不允許我在顯示以下錯誤的行上進行操作:無法從字符串轉換為列表。 請告訴我如何訪問這兩個列表並進行進一步處理:
List<String> metadataValues = parseXml(metadata.xml);
System.out.println("metadataValues in first method ---->" + metadataValues.size());
List<String> countriesList = metadataValues.get(0);
List<String> languageList = metadataValues.get(1);
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
if (countriesList.size() == 1 || languageList.size() == 1) {
for (String cnt: countriesList) {
video.setCountry(cnt);
}
for (String language: languageList) {
video.setLanguage(language);
}
}
if (countriesList.size() >= 2 || languageList.size() >= 2) {
for (String s: countriesList) {
sb.append(s);
sb.append(",");
}
for (String s1: languageList) {
sb1.append(s1);
sb1.append(",");
}
}
if (sb.length() != 0) {
sb.deleteCharAt(sb.length() - 1);
System.out.println("StringBuilder Value ------>" + sb.toString());
video.setCountry(sb.toString());
}
if (sb1.length() != 0) {
sb1.deleteCharAt(sb1.length() - 1);
System.out.println("StringBuilder Value ------>" + sb1.toString());
video.setLanguage(sb1.toString());
}
這是parseXml方法:
private static List < String > parseXml(String xmlData)
throws ParserConfigurationException, SAXException, IOException {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource src = new InputSource();
src.setCharacterStream(new StringReader(xmlData));
Document doc = builder.parse(src);
NodeList nodes = doc.getElementsByTagName("metadata");
Element line = null;
Element line1 = null;
List<String> countryList = new ArrayList<String>();
List<String> languageList = new ArrayList<String>();
List<String> metadataList = new ArrayList<String>();
for (int i = 0; i < nodes.getLength(); i++) {
Element element = (Element) nodes.item(i);
NodeList countryNodes = element.getElementsByTagName("Country");
NodeList languageNodes = element.getElementsByTagName("Language");
for (int j = 0; j < countryNodes.getLength(); j++) {
for (int k = 0; k < languageNodes.getLength(); k++) {
if (countryNodes != null) {
line = (Element) countryNodes.item(j);
if (line != null) {
countryList.add(getCharacterDataFromElement(line));
}
}
if (languageNodes != null) {
line1 = (Element) languageNodes.item(k);
if (line1 != null) {
languageList
.add(getCharacterDataFromElement(line1));
}
}
}
}
metadataList.addAll(countryList);
metadataList.addAll(languageList);
// System.out
// .println("countryList.size() ----->" + countryList.size());
}
return metadataList;
}
list != list of list
在parseXml()
方法中更改列表的聲明。
List<String> metadataList = new ArrayList<String>();
至
List<List<String>> metadataList = new ArrayList<List<String>>();
並添加元素為
metadataList.add(countryList);
metadataList.add(languageList);
然后,您以后可以將這些列表作為單個元素檢索。
好了,您有兩個List<String>
並將所有條目(單個條目是String)添加到元數據列表。 如果使用列表的get()
方法,則將在特定索引處檢索String。
將兩個列表存儲在數組中以重新訪問兩者,或者使用List<List<String>> metadatalist
。 因此,您可以使用add()
方法將兩個列表都添加到元數據列表中,並可以再次訪問每個列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.