需要写java代码来实现动态比较居网的任意2台机器的同名数据库的表是否相同  字段是否相同 以及详细信息是否相同 首先要完成一个功能 ,
有2个list   List<String>  alist  ;      List<String> balist 
现在alist里string名字都不同 ,  blist也一样。
需要完成的功能是  把alist的每个string循环取出 ,看他是否在blist里,如果不在添加这个string到clist里;
反过来,也要做, 把blist的每个string循环取出 ,看他是否在alist里,如果不在添加这个string到clist里清问这段代码如何写?

解决方案 »

  1.   

    就是把list中不在另一个list 中存在的,存到第三个list中去是吧
      

  2.   

    public static void main(String[] args) {
    List alist = new ArrayList();
    List balist = new ArrayList();
    for (int i = 0; i < alist.size(); i++) {
    String aStr = (String) alist.get(i);
    if (!balist.contains(aStr)) {
    balist.add(aStr);
    }
    }
    }
    balist到alist也一样
      

  3.   

    遍历alist和blist,把所有的元素放到Set中去,再把Set中的元素复制回alist和blist,这样就好了。
      

  4.   

    完整如下  经过测试ok List<String> alist=new ArrayList<String>();
    List<String> blist=new ArrayList<String>();
    List<String> clist=new ArrayList<String>();
    String temp=null;

    alist.add("a.sport");
    alist.add("a.sport2");
    alist.add("a.sport4");
    blist.add("a.sport3");
    blist.add("a.sport2");
    blist.add("a.sport4");

    for(int i=0;i<alist.size();i++)      
      {       if(!blist.contains(alist.get(i))) 
     {
      temp="alist "+alist.get(i);
      clist.add(temp);
     }                  
     
           }

    for(int i=0;i<blist.size();i++)      
      {       if(!alist.contains(blist.get(i))) 
     {
     temp="blist "+blist.get(i);
     clist.add(temp);
     }                       }

    for(int i=0;i<clist.size();i++)   
      System.out.println(i+":  " + clist.get(i) );

      

  5.   

    现在实际开始做事情,实际上alist是 List <record>  record大概有10个项目,
    blist也一样的额这样比较起来比较有难度
    首先要判断alist的record的第1个项目的值所对应的额blist对应的record
    之后要比较2个record是否相同(也就是2个record还要比较9次,完全相同才真正相同 否则打印出不同的地方给clist)
      

  6.   

    测试通过!更高效率!更少代码! List<String> alist = new ArrayList<String>();
    List<String> blist = new ArrayList<String>();
    List<String> clist = new ArrayList<String>();
    for (String str : alist) {
    clist.add(str);
    }
    alist.retainAll(blist); clist.removeAll(alist);
    blist.removeAll(alist); clist.addAll(blist);
      

  7.   

    可惜现在问题变得复杂太多 了,不是楼上考虑的那个简单问题了,
    现在是alist是 List <record>  record大概有10个项目,判断alist的record的第1个项目的值所对应的额blist对应的record 
    之后要比较2个record是否相同(也就是2个record还要比较9次,完全相同才真正相同 否则打印出不同的地方给clist) 
    --------这个如何实现
      

  8.   

    用for循环 然后里面用if 一个一个的判断阿
      

  9.   

    for(int i=0;i <alist.size();i++)  
    for(int i=0;i <blist.size();i++) private boolean compare(Record record){
    if((this.address1==null)   ||   (this.address1.equals("")) ||  (record.address1==null)   ||   (record.address1.equals(""))      ) 
       return false;
    else if(this.address1.compareTo(record.address1)>0)
    return true;
    else 
    return false;
    }

    public static List<Record> sort(List<Record> recordList){

    for(int i = 0;i<recordList.size();i++){
    for(int j=i+1;j<recordList.size();j++){
    if(!recordList.get(i).compare(recordList.get(j))){
    Record record = recordList.get(i);
    recordList.set(i, recordList.get(j));
    recordList.set(j, record);
    }
    }
    }
    for(Record record1:recordList){
    System.out.println(record1.getFullName());
    }
    return recordList;
    }private boolean compare(Record record){
    if((this.address1==null)   ||   (this.address1.equals("")) ||  (record.address1==null)   ||   (record.address1.equals(""))      ) 
       return false;
    else if(this.address1.compareTo(record.address1)>0)
    return true;
    else 
    return false;
    }

    public static List<Record> sort(List<Record> recordList){

    for(int i = 0;i<recordList.size();i++){
    for(int j=i+1;j<recordList.size();j++){
    if(!recordList.get(i).compare(recordList.get(j))){
    Record record = recordList.get(i);
    recordList.set(i, recordList.get(j));
    recordList.set(j, record);
    }
    }
    }
    for(Record record1:recordList){
    System.out.println(record1.getFullName());
    }
    return recordList;
    }