在一个arraylist中组合两个或更多arraylist

时间:2015-02-18 08:13:21

标签: java arraylist jstl

尝试将两个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

}

3 个答案:

答案 0 :(得分:2)

创建一个名为IpDetails的新类,说有三个字段

  • IP
  • 数1 - 给一些好名字
  • 数2

在对象级别定义一个映射,ip为key,IpDetails为value。

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

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

  • 从地图中,获取相应的IpDetails,并将ip地址作为密钥。
  • 现在填充count2字段

现在你已经掌握了所有三个细节,因此你可以将值作为IpDetails的集合传递给GUI。

答案 1 :(得分:0)

也许你可以输出这样的结果?

此外,您还可以从中获取对象结果。

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

答案 2 :(得分:0)

这个怎么样?

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