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

时间:2013-12-20 18:19:39

标签: java arraylist

我正在尝试从两个不同的网站检索一些数据,并希望将它们存储在不同的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。数据被添加但是所有数据都没有按照我希望的那样分开。

2 个答案:

答案 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