Java从一个ArrayList中删除两个ArrayList
我有一个列表,其中存储了2个ArrayListJava从一个ArrayList中删除两个ArrayList,java,arraylist,elements,Java,Arraylist,Elements,我有一个列表,其中存储了2个ArrayList metadataList.addAll(countryList); metadataList.addAll(languageList); 在另一种方法中,我想访问这两个列表。我正在尝试以下代码: List<String> countriesList = metadataValues.get(0); List<String> languageList = metadataValues.get(1); List countr
metadataList.addAll(countryList);
metadataList.addAll(languageList);
在另一种方法中,我想访问这两个列表。我正在尝试以下代码:
List<String> countriesList = metadataValues.get(0);
List<String> languageList = metadataValues.get(1);
List countriesList=metadataValues.get(0);
List 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());
}
List metadataValues=parseXml(metadata.xml);
System.out.println(“第一个方法中的metadataValues-->”+metadataValues.size());
List countriesList=metadataValues.get(0);
List languageList=metadataValues.get(1);
StringBuilder sb=新的StringBuilder();
StringBuilder sb1=新的StringBuilder();
如果(countriesList.size()=1 | | languageList.size()=1){
用于(字符串cnt:countriesList){
国家电视台(cnt);
}
for(字符串语言:languageList){
视频。设置语言(语言);
}
}
如果(countriesList.size()>=2 | | languageList.size()>=2){
for(字符串s:countriesList){
某人追加;
某人加上(“,”);
}
for(字符串s1:语言列表){
sb1.追加(s1);
sb1.附加(“,”);
}
}
如果(sb.length()!=0){
sb.deleteCharAt(sb.length()-1);
System.out.println(“StringBuilder值------->”+sb.toString());
video.setCountry(sb.toString());
}
如果(sb1.length()!=0){
sb1.deleteCharAt(sb1.length()-1);
System.out.println(“StringBuilder值------->”+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;
}
private static ListparseXml(String-xmlData)
抛出ParserConfiguration异常、SAXException、IOException{
DocumentBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource src=新的InputSource();
src.setCharacterStream(新的StringReader(xmlData));
文档doc=builder.parse(src);
NodeList节点=doc.getElementsByTagName(“元数据”);
元素行=空;
元素line1=null;
List countryList=new ArrayList();
List languageList=新建ArrayList();
List metadataList=新的ArrayList();
对于(int i=0;i”+countryList.size());
}
返回元数据列表;
}
在parseXml()
方法中更改列表的声明
List<String> metadataList = new ArrayList<String>();
然后,您可以稍后将这些列表作为单个元素检索。好的,您有两个
List
并将所有条目(单个条目是字符串)添加到metadatalist中。如果使用列表的get()
方法,将在特定索引处检索字符串
将这两个列表存储在一个数组中以重新访问这两个列表,或者使用
列表元数据列表
。因此,您可以使用add()
方法将两个列表添加到元数据列表中,并可以再次访问每个列表。也许您只需要一个(两个)列表的数组。。。或者更好,一张地图来存储这个国家的国家和语言(我猜)@Suresh Atta-非常感谢Suresh。这是有效的。我用上述声明更改了代码。@kevcodez-感谢您的解释。当我尝试上面的代码时,它确实给了我一个条目。
List<String> metadataList = new ArrayList<String>();
List<List<String>> metadataList = new ArrayList<List<String>>();
metadataList.add(countryList);
metadataList.add(languageList);