簡體   English   中英

將兩個或多個arraylist合並到一個arraylist中

[英]combine two or more arraylist in one arraylist

嘗試將兩個ArrayList合並為一個,下面是兩個List的值。 W_VISIT描述特定的HOST_ADDR地址訪問了網頁多少次。

HOST_ADDR-W_VISIT

10.202.64.52-11

10.202.64.78-5

10.202.64.34-1

HOST_ADDR-W_VISIT

10.146.84.179-1

10.202.64.52-16

10.202.64.78-18

我在這里嘗試做的就是結合兩個數組列表(SQL中完全外部聯接的種類)

輸出:

10.202.64.52-11-16

10.202.64.78-5-18

10.202.64.34-1-0

10.146.84.179-0-1

等等..

public  List getData() 
{   
    data=new ArrayList();        
    ResultSet rs=ps.executeQuery();
    while(rs.next()){         
         fetchValue=new NewClass();         
         fetchValue.setCount(rs.getInt(1));
         fetchValue.setIp(rs.getString(2));       
         data.add(fetchValue);         
      }         

    return data;           
}
public List get2Data()
{ 
    data1=new ArrayList();                 
    ResultSet rs=ps.executeQuery();
    while(rs.next()){         
         fetchValue1=new NewClass();         
         fetchValue1.setCount(rs.getInt(1));
         fetchValue1.setIp(rs.getString(2));       
         data1.add(fetchValue1);
      }

    return data1;
}
public List get3Data(){
 //what to do here... not looking for code, just seeking a way to do

}

創建一個名為IpDetails的新類,其中包含三個字段

  • IP
  • 數1-給個好名字
  • 數2

在對象級別定義一個映射,將ip作為鍵,將IpDetails作為值。

當您觸發第一個查詢時,通過創建IpDetails對象並填充從Query中獲得的內容來填充地圖,並將計數2保留為未初始化。

當您觸發第二個查詢時,請執行以下操作:

  • 從映射中,獲取給定ip地址作為關鍵字的對應IpDetails。
  • 立即填充count2字段

現在,您已經擁有了所有三個詳細信息,因此您可以將值作為IpDetails的集合傳遞給GUI。

也許您可以像這樣輸出結果?

而且您還可以從中獲取對象結果。

public void tester() {
    final List<NewClass> list1 = new ArrayList<NewClass>();
    NewClass fetchValue11 = new NewClass();
    fetchValue11.setIp("10.202.64.52");
    fetchValue11.setCount(11);
    NewClass fetchValue12 = new NewClass();
    fetchValue12.setIp("127.0.0.1");
    fetchValue12.setCount(5);
    NewClass fetchValue13 = new NewClass();
    fetchValue13.setIp("0:0:0:0:0:0:1");
    fetchValue13.setCount(1);
    list1.add(fetchValue11);
    list1.add(fetchValue12);
    list1.add(fetchValue13);

    final List<NewClass> list2 = new ArrayList<NewClass>();
    NewClass fetchValue21 = new NewClass();
    fetchValue21.setIp("10.202.64.52");
    fetchValue21.setCount(16);
    NewClass fetchValue22 = new NewClass();
    fetchValue22.setIp("127.0.0.1");
    fetchValue22.setCount(0);
    NewClass fetchValue23 = new NewClass();
    fetchValue23.setIp("0:0:0:0:0:0:1");
    fetchValue23.setCount(4);
    NewClass fetchValue24 = new NewClass();
    fetchValue24.setIp("10.202.64.78");
    fetchValue24.setCount(18);
    list2.add(fetchValue21);
    list2.add(fetchValue22);
    list2.add(fetchValue23);
    list2.add(fetchValue24);

    List<NewClass> list = new ArrayList<NewClass>();
    list.addAll(list2);
    list.addAll(list1);
    System.out.println(list.size());

    Collections.sort(list, new Comparator<NewClass>() {
        public int compare(final NewClass o1, final NewClass o2) {
            if (o1.getIp().equals(o2.getIp())) {
                System.out.println(o1.getIp() + "---" + o1.getCount() + "---" + o2.getCount());
            }
            return o1.getIp().compareTo(o2.getIp());
        }
    });
}

這個如何?

public List get3Data() {
    final List<NewClass[]> data3 = new ArrayList<NewClass[]>();

    List<NewClass> list = new ArrayList<NewClass>();
    list.addAll(data);
    list.addAll(data1);

    Collections.sort(list, new Comparator<NewClass>() {
        public int compare(final NewClass o1, final NewClass o2) {
            if (o1.getIp().equals(o2.getIp())) {
                data3.add(new NewClass[]{o1, o2});
            }
            return o1.getIp().compareTo(o2.getIp());
        }
    });

    return data3;
}

暫無
暫無

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

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