Sring 字段名 Object 字段值XML文件里面指定 具体哪两个字段(段值大小)做比较,因为按照指定的比较字段的值大小已经排好序,想实现Match处理。例如 比较的两个字段(值 )为M,N
if( l1.get(m)<l2.get(n))
{
直接插入DB
m++
}
if(l1.get(m)>l2.get(n))
{
直接插入DB
n++;
}
else
{ 比较后的值插入DB
compare();
m++;n++;
if( l1.get(m)<l2.get(n))
{
直接插入DB
m++
}
if(l1.get(m)>l2.get(n))
{
直接插入DB
n++;
}
else
{ 比较后的值插入DB
compare();
m++;n++;
如图两个表,以ID为比较字段
表1第一条值为01 < 表2为02
那么表1的01这条直接存入DB,并往下读一条。。表2的下标不动表1读了下一条为03 > 表2为02
那么表2的01这条直接存入DB,并往下读一条。。表1的下标不动这里表1没读,还是03 ==表2往下读了一条为03
然后他们做比较,比较后直接插入DB因为一般指定复数个字段为比较字段,,,所以不会有重复
public class Test {
public void ListCompare(List list1,List list2){
List l1=new ArrayList();
List l2=new ArrayList();
for(int i=0;i<list1.size();i++){
Map<String,Object> map1=(Map)list1.get(i);
for (String key : map1.keySet()) {
System.out.println("Key = " + key);
l1.add(key);
}
}
for(int j=0;j<list2.size();j++){
Map<String,Object> map2=(Map)list1.get(j);
for (String key : map2.keySet()) {
System.out.println("Key = " + key);
l2.add(key);
}
for(int m=0,n=0;m<l1.size() && n<l2.size();m++,n++){
if( l1.get(m)<l2.get(n))
{
m++;
}
if(l1.get(m)>l2.get(n))
{
n++;
}
else
{
compare();
}
}
if(m1<m2){//m1是比较先 m2是比较元 //m3 是要的那个值
}else if(m1<m2){
} else if(m1==m2)
{
}
}
if(l1.get(1).equals(l2.get(2))){
}
}
public static void main(String[] args) { Test test=new Test();
Map<String, String> map1 = new HashMap<String, String>();
map1.put("a", "1");
map1.put("b", "3");
map1.put("c", "5"); Map<String, String> map2 = new HashMap<String, String>();
map2.put("a", "2");
map2.put("b", "4");
map2.put("c", "6"); List<Map<String, String>> lm = new ArrayList<Map<String, String>>();
List<Map<String, String>> lm2 = new ArrayList<Map<String, String>>();
lm.add(map1);
lm.add(map2);
test.ListCompare(lm, lm2); }}
我理解你这个就是想得到一个包括所有元素的有序列表,而且不太重视效率
那其实有更简单的思路,先把所有元素放进一个List里,然后对这个List排序就行了,调用集合框架的排序方法