将两个或多个数组列表合并为一个数组列表
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;
}
尝试将两个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;
}