将两个或多个数组列表合并为一个数组列表

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

}

创建一个新的 class 名为 IpDetails say 的三个字段

  • ip
  • count 1 --给个好名字
  • 计数 2

以 ip 为键,IpDetails 为值在对象级别定义映射。

当您触发第一个查询时,通过创建 IpDetails 对象并填充您从 Query 获得的内容来填充地图,并将计数 2 保留为未初始化。

当您触发第二个查询时,请执行以下操作:

  • 从地图中获取对应的IpDetails,给定ip地址作为key。
  • 立即填充 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;
}