比较两个arrayList并将结果存入thirth arrayList

时间:2013-06-14 11:19:48

标签: java networking

我希望比较2 arrayList,当我在其中存储telnet的类java的结果 这个类是telnet关于路由器并给出这个路由器的所有接口然后将它们存储在arrayList中 所以我在myData1中存储了router1的接口,在myData2中存储了第二个接口 我将比较第一个aray的接口是否与第二个相同只是在结果myData数组中添加其中一个 但它让我反感代码

public class Test {

       public static void main(String[] args) {

    Connection conn = null;
     try { 
conn = DriverManager.getConnection("jdbc:mysql://localhost/mohammedia", "root", "123456"); 
String sql = "SELECT * FROM router;"; 
          Telnet_Interface telnet = new Telnet_Interface();
          Telnet_Interface telnet1 = new Telnet_Interface();
          Telnet_Interface telnet2 = new Telnet_Interface();
            PreparedStatement prest = conn.prepareStatement(sql);
            ResultSet res=prest.executeQuery();
            while(res.next()){
telnet1.Config(res.getString(1), "user", "passwd", res.getString(1));
telnet2.Config(res.getString(2), "user", "passwd", res.getString(2));
            }
           ArrayList myData=new ArrayList();
           ArrayList myData1=telnet1.getMyData();
           ArrayList myData2=telnet2.getMyData();
      boolean bool=false;            
  for(int i=0;i<myData1.size();i++)    
  {    
     for(int j=0;j<myData2.size();j++)    
    {
        if (myData2.get(j).equals(myData1.get(i)))
             {                
                bool=true; 
                //System.out.print("sdfsd");
             }

    if(!bool)
        {
            myData.add(myData2.get(j));
            //System.out.print("sdsd");
        }      
  }
  }
  for(int x=0;x<myData.size();x++)
  {
      System.out.print(myData.get(x));
  }

     } catch (SQLException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); 
     }       
}

}

有什么问题? 谢谢

2 个答案:

答案 0 :(得分:1)

您可以像这样使用ArrayList.retainAll方法

list1.retainAll(list2)

在此方法之后,list1将仅包含list2中可用的数据。

答案 1 :(得分:0)

(不是答案)全部分开。使用记录并处理异常。

  1. 如果它不是一种字典攻击,请首先使用密码检索用户。

    • 关闭结果集,声明和连接。
    • 检查结果。
  2. 然后获取telnet数据。

    • 检查结果。
  3. 然后进行比较。

    • 我希望你能看到@StinePike删除的答案;他基本上建议list1.retainAll(list2)删除list2中发生的list1中的所有元素。

  4. 我想你想做以下事情。 Outcommented是非循环替代方案。

    // Add all myData2 and myData1 elements but not twice to myData.
    
    // (1) Add myData2
    
    myData.addAll(myData2);
    
    // (2) Add myData1 when not in myData2
    
    //myData1.removeAll(myData1);
    //myData.addAll(myData1);
    for (int i = 0; i < myData1.size(); i++)    
    {    
        boolean found = false;
        for (int j = 0; j < myData2.size(); j++)    
        {
            if (myData2.get(j).equals(myData1.get(i)))
            {   
                found = true;
                break;             
            }
        }
        if (!found)
        {      
            myData.add(myData1.get(i));
        }
    }