尝试将两个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
}
答案 0 :(得分:2)
创建一个名为IpDetails的新类,说有三个字段
在对象级别定义一个映射,ip为key,IpDetails为value。
当您触发第一个查询时,通过创建IpDetails对象填充地图并填充从Query获得的内容并将计数2保留为未初始化。
当您触发第二个查询时,请执行以下操作:
现在你已经掌握了所有三个细节,因此你可以将值作为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;
}