簡體   English   中英

比較兩個arrayList並將結果存儲在第三個arrayList中

[英]compare two arrayList and stock the result in a thirth arrayList

我想比較2 arrayList,當我在其中存儲telnet的java類的結果時,該類是關於路由器的telnet,並給出該路由器的所有接口,然后將它們存儲在arrayList中,因此我將my1中的router1的接口存儲第二個在myData2中,我將比較第一個的接口是否與第二個相同,只需在結果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); 
     }       
}

}

有什么問題 ?? 謝謝

您可以像這樣使用ArrayList.retainAll方法

list1.retainAll(list2)

此方法之后,list1將僅包含list2中可用的數據。

(沒有答案) 將所有內容分開。 使用日志記錄並處理異常。

  1. 如果這不是一種字典攻擊,請首先執行SQL使用密碼檢索用戶。

    • 關閉結果集,語句和連接。
    • 檢查結果。
  2. 然后獲取telnet數據。

    • 檢查結果。
  3. 然后進行比較。

    • 希望您能看到@StinePike的已刪除答案; 他基本上建議使用list1.retainAll(list2)刪除list1中出現在list2中的所有元素。

我認為您想執行以下操作。 值得推薦的是非循環選擇。

// 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));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM