我正在尝试从两个不同的网站检索一些数据,并希望将它们存储在不同的arraylists中以便进一步处理。总而言之,我有6个String arrayLists,然后我有三个arraylists,我已经添加了这些String arrayLists。我这样做是为了使用循环将数据添加到String arrayLists(请参阅下面的代码)。然而,它没有以我期望的方式向String arrayLists添加数据,显然我的逻辑是错误的。只需一点指导就会非常感激。我的代码的相关代码片段如下:
//creating the String type ArrayLists
private static ArrayList<String> m1=new ArrayList<String>();
private static ArrayList<String> re1=new ArrayList<String>();
private static ArrayList<String> ra1=new ArrayList<String>();
private static ArrayList<String> m2=new ArrayList<String>();
private static ArrayList<String> re2=new ArrayList<String>();
private static ArrayList<String> ra2=new ArrayList<String>();
//creating three ArrayLists of ArrayLists
private static ArrayList<ArrayList> arraylistM = new ArrayList<ArrayList>();
private static ArrayList<ArrayList> arraylistRe = new ArrayList<ArrayList>();
private static ArrayList<ArrayList> arraylistRa = new ArrayList<ArrayList>();
public static void main(String[] args) throws Exception
{
URL[] item=new URL[2];
item[0] = new URL("http://www.example111111.html");
item[1] = new URL("http://www.example222222.html");
arraylistM.add(m1);
arraylistM.add(m2);
arraylistRe.add(re1);
arraylistRe.add(re2);
arraylistRa.add(ra1);
arraylistRa.add(ra2);
for(int loop=0;loop<2;loop++)
{
BufferedReader in = new BufferedReader(
new InputStreamReader(
item[loop].openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
{
String withoutSpeechMarks=inputLine.replaceAll("\"", "");
String[] parts = withoutSpeechMarks.split("<span x=");
for (int i=0;i<parts.length;i++)
{
if (parts[i].contains("1>"))
{
(arraylistM.get(i)).add(parts[i].substring(13, (parts[i].length())-7));
}//get the first string array in arraylistM and add this data to it
if (parts[i].contains("2>"))
{
(arraylistRe.get(i)).add(parts[i].substring(9, (parts[i].length())-10));
}
if (parts[i].contains("3>"))
{
(arraylistRa.get(i)).add(parts[i].substring(7, (parts[i].length())-7));
}
}//end of inner for loop
} //end of while
in.close();
}
for (int i = 0; i < arraylistM.size(); i++)
{
System.out.println(arraylistM.get(i)+"||"+arraylistRe.get(i)+"||"+arraylistRa.get(i) );
}
我希望它的方式是从第一个网站,提取的结果应该添加到字符串数组m1,re1,ra1,然后从第二个网站,数据应该添加到字符串数组m2,re2 ,ra2。数据被添加但是所有数据都没有按照我希望的那样分开。
答案 0 :(得分:2)
根据您的描述,听起来您应该使用
arrayListM.get(loop).add( ... )
arrayListRe.get(loop).add( ... )
arrayListRa.get(loop).add( ... )
在第一个循环而不是
arrayListM.get(i).add( ... )
arrayListRe.get(i).add( ... )
arrayListRa.get(i).add( ... )
此外,您应该考虑将ArrayLists的ArrayLists声明为:
ArrayList<ArrayList<String>>
而不是
ArrayList<ArrayList>
答案 1 :(得分:0)
看来你在合并两个Arraylist时遇到问题。您可以使用addAll method轻松加入两个ArrayList。
ArrayList<String> al1=new ArrayList()<String>;
ArrayList<String> al2= new ArrayList()<String>;
al1.addAll(al2);
它会将第二个arraylist的所有元素添加到第一个arraylist