有一个 studenta 类、
一个对象
id    name    age 
1     1n      1
另一个 studentb 类
一个集合
id    name    age 
2      2n      2
3      3n      3
现在要做的是  把studenta中 id 和 name 与studentb中的id 和 name 互换 ,age 不变
从studentb的最后数据开始。
这是开始的数据
id    name    age      id    name    age 
 1     1n      1       2      2n      2
                       3      3n      3
第一次交换
id    name    age      id    name    age 
 3     3n      1       2      2n      2
                       1      1n      3
第二次交换
id    name    age      id    name    age 
 2     2n      1       3      3n      2
                       1      1n      3

解决方案 »

  1.   

    再定义一个中间对象作为临时的保存不行?和 int temp =a;
                                          a=b;
                                          b=temp思路差不多应该可以
      

  2.   


    import java.util.*;class Student
    {
    int id;
    String name;
    int age; Student(int id,String name,int age)
    {
    this.id=id;
    this.name=name;
    this.age=age;
    }
    }
    class SwitchElement 
    {
    public static void main(String[] args) 
    {
    switchElement();

    } public static void switchElement()
    {

    Student stua=new Student(1,"1n",1);
    ArrayList<Student> stub=new ArrayList<Student>();
    stub.add(new Student(2,"2n",2));
    stub.add(new Student(3,"3n",3));
    System.out.println("start...");
    System.out.println(stua.id+","+stua.name);
    for(Student s:stub)
    System.out.println(s.id+","+s.name);
    System.out.println("change...");
    for(int x=stub.size()-1;x>=0;x--)
    {
    Student stu=stub.get(x);
    //System.out.println(stu.id+","+stu.name);
    change(stua,stu);

    } System.out.println(stua.id+","+stua.name);
    for(Student s:stub)
    System.out.println(s.id+","+s.name);
    } public static void change(Student s1,Student s2)
    {
    int temp=s1.id;
    s1.id=s2.id;
    s2.id=temp; String temp2=s1.name;
    s1.name=s2.name;
    s2.name=temp2;
    }
    }
      

  3.   

    谢谢,楼上的两位,按两个的思路,我自己写了一下。package com.picc.test;import java.util.ArrayList;
    import java.util.List;public class StudentTest {
    public static void main(String[] args) {
    Student stu1= new Student();
    stu1.setId(1);
    stu1.setName("1a");
    stu1.setAge(1);

    Student stu2= new Student();
    stu2.setId(2);
    stu2.setName("2a");
    stu2.setAge(2);

    Student stu3= new Student();
    stu3.setId(3);
    stu3.setName("3a");
    stu3.setAge(3);

    Student stu4= new Student();
    stu4.setId(4);
    stu4.setName("4a");
    stu4.setAge(4);
    List<Student> stus = new ArrayList<Student>();
    stus.add(stu2);
    stus.add(stu3);
    stus.add(stu4);
    // System.out.println(stu1+"\t"+stu2+"\t"+stu3);
    // for(int i=stus.size()-1;i>=0;i--){
    //  System.out.println(stus.get(i));
    //  Student tempa = stus.get(i);
    //  stu1.setId(tempa.getId());
    //  stu1.setName(tempa.getName());
    //
    // }

      System.out.println("对换前:"+stu1+"\t"+stu2+"\t"+stu3+"\t"+stu4);
    /*** **/
      Student stuClone = null;
        int size=stus.size()-1;
        while(size>=0){
          stuClone =(Student)stu1.clone();
          System.out.println("拷贝:"+stuClone);
          Student temp = stus.get(size);
          stu1.setId(temp.getId());
          stu1.setName(temp.getName());
          temp.setId(stuClone.getId());
          temp.setName(stuClone.getName());
          size--;
        }
        System.out.println("对换后:"+stu1+"\t"+stu2+"\t"+stu3+"\t"+stu4);
        for(Student s:stus){
         System.out.println("对换后:"+s);
        }
       
    }
    }
    结果:
    对换前:Student [ id=1, name=1a,age=1] Student [ id=2, name=2a,age=2] Student [ id=3, name=3a,age=3] Student [ id=4, name=4a,age=4]
    拷贝:Student [ id=1, name=1a,age=1]
    拷贝:Student [ id=4, name=4a,age=1]
    拷贝:Student [ id=3, name=3a,age=1]
    对换后:Student [ id=2, name=2a,age=1] Student [ id=3, name=3a,age=2] Student [ id=4, name=4a,age=3] Student [ id=1, name=1a,age=4]
    对换后:Student [ id=3, name=3a,age=2]
    对换后:Student [ id=4, name=4a,age=3]
    对换后:Student [ id=1, name=1a,age=4]