Java 将字符串添加到存储在ArrayList中的字符串ArrayList

Java 将字符串添加到存储在ArrayList中的字符串ArrayList,java,arraylist,Java,Arraylist,我正在尝试从两个不同的网站检索一些数据,并希望将它们存储在不同的ArrayList中以供进一步处理。总之,我有6个字符串ArrayList,然后我有三个ArrayList,我将这些字符串ArrayList添加到其中。我这样做是为了使用循环将数据添加到字符串ArrayList(请参见下面的代码)。然而,它并没有以我期望的方式向字符串ArrayList添加数据,显然我的逻辑是错误的。如果您能给我一点指导,我将不胜感激。下面是我的代码的相关片段: //creating the String t

我正在尝试从两个不同的网站检索一些数据,并希望将它们存储在不同的ArrayList中以供进一步处理。总之,我有6个字符串ArrayList,然后我有三个ArrayList,我将这些字符串ArrayList添加到其中。我这样做是为了使用循环将数据添加到字符串ArrayList(请参见下面的代码)。然而,它并没有以我期望的方式向字符串ArrayList添加数据,显然我的逻辑是错误的。如果您能给我一点指导,我将不胜感激。下面是我的代码的相关片段:

    //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) );
}  
//创建字符串类型的ArrayList
私有静态ArrayList m1=新ArrayList();
私有静态ArrayList re1=新ArrayList();
私有静态ArrayList ra1=新ArrayList();
私有静态ArrayList m2=新ArrayList();
私有静态ArrayList re2=新ArrayList();
私有静态ArrayList ra2=新ArrayList();
//创建三个ArrayList的ArrayList
私有静态ArrayList ArrayList=new ArrayList();
私有静态ArrayList ArrayList=新ArrayList();
私有静态ArrayList ArrayList=新ArrayList();
公共静态void main(字符串[]args)引发异常
{
URL[]项=新URL[2];
项[0]=新URL(“http://www.example111111.html");
项目[1]=新URL(“http://www.example222222.html");
arraylistM.add(m1);
arraylistM.add(m2);
arraylistRe.add(re1);
arraylistRe.add(re2);
arraylistRa.add(ra1);
arraylistRa.add(ra2);
对于(int循环=0;循环“))
{
(arraylistRe.get(i)).add(部分[i].子字符串(9,(部分[i].length())-10));
}
if(第[i]部分包含(“3>”)
{
(arraylistRa.get(i)).add(部分[i].子字符串(7,(部分[i].length())-7));
}                                               
}//内循环结束
}//时间结束
in.close();
}
对于(int i=0;i

我希望它是这样的,从第一个网站,提取的结果应该被添加到字符串数组m1,re1,ra1,然后从第二个网站,数据应该被添加到字符串数组m2,re2,ra2。数据被添加到一起,但并没有像我希望的那样分开。

从您的描述中,听起来像你应该使用

arrayListM.get(loop).add( ... )
arrayListRe.get(loop).add( ... )
arrayListRa.get(loop).add( ... )
在第一个循环中,而不是

arrayListM.get(i).add( ... )
arrayListRe.get(i).add( ... )
arrayListRa.get(i).add( ... )
ArrayList<ArrayList>

此外,您应该考虑将ARARYLIST的数组列表声明为:

ArrayList<ArrayList<String>>
ArrayList
而不是

arrayListM.get(i).add( ... )
arrayListRe.get(i).add( ... )
arrayListRa.get(i).add( ... )
ArrayList<ArrayList>
ArrayList

在合并两个Arraylist时,您似乎遇到了问题。您可以使用轻松地合并两个Arraylist

ArrayList al1=新的ArrayList();
ArrayList al2=新的ArrayList();
al1.addAll(al2);

它会将第二个arraylist的所有元素添加到第一个arraylist中

类型应该使用接口
List arraylist=new arraylist();
@Chris-是的,这是一个很好的一般规则。(当然,它只适用于有适当接口且不需要任何特定于具体类的功能的情况。还值得注意的是,在一些Java实现中——大部分是没有JIT编译器的旧实现——调用接口中的函数会有轻微的性能损失。因此,声明s ArrayList a=new ArrayList();List b=a;,对a的方法调用将比对b的方法调用快一点点。)请不要像这样删除问题的内容。这对那些花时间和精力帮助你的人是不公平的。