一、基本类型的交换
对于定义的基本类型的变量,要实现交换,我们通常会采取中间变量的方式。
以 int类型为例,实现两个变量的交换,代码如下:

public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("交换前a=" + a + "\t" + "b=" + b);

        //定义一个中间变量存储a的值
        int temp = a;
        //把b的值赋给a
        a = b;
        //取出中间变量temp存储的a的值赋给b实现交换
        b = temp;

        System.out.println("交换后a=" + a + "\t" + "b=" + b);
    }
}

运行结果:

java使用Teigha库 java中temp怎么用_Java

二、任意引用类型数组指定位置元素交换
对于数组,不仅能存储基本类型的数据,也可以存储引用类型的数据,比如我们经常会定义数组,里面存储字符串类型的数据
定义一个泛型方法,实现任意引用类型数组指定位置元素交换(泛型方法很少用,这里只是为了实现引用类型的交换)
以我们常用的String类型为例,实现交换
代码如下:

public class Test {
    public static void main(String[] args) {
       String[] strings={"I","love","Java"};
       exChange(strings,0,2);
    }
    private static <E> void exChange( E[] e,int a,int b){
        System.out.println("交换前:");
        for (E x:e) {
            System.out.print(x+"  ");
        }
        System.out.println();
        //元素互换
        E temp = e[a];
        e[a] = e[b];
        e[b] = temp;
        System.out.println("交换后:");
        for (E x:e) {
            System.out.print(x+"  ");
        }
    }
}

运行结果:

java使用Teigha库 java中temp怎么用_java使用Teigha库_02


引用类型同样采用中间变量的方式实现交换,只不过与基本类型不同的是,基本类型直接交换变量值,而引用类型交换的是对象的地址

三、对于元素有序的集合List实现指定位置元素的交换

Collection分支下的List集合中的元素是有序的,同数组一样可以通过索引实现集合中元素的交换

但不能同基本类型的变量和数组元素那样操作,具体实现代码如下:

public class Test {
    public static void main(String[] args) {
      ArrayList<Humen> list=new ArrayList<>();
        Humen s1=new Humen("刘备",44,'男');
        Humen s2=new Humen("黄月英",40,'女');
        Humen s3=new Humen("董卓",64,'男');
        Humen s4=new Humen("曹操",50,'男');
        Humen s5=new Humen("孙尚香",23,'女');
        Humen s6=new Humen("貂蝉",20,'女');
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);
        list.add(s6);
        print(list);
        System.out.println("==================================");
        exChangeObj(list,0,5);
        print(list);
    }

    //交换指定索引处的任意类型的元素
    public static <E> void exChangeObj(ArrayList<E> list,int x,int y){
        /*
        用先前定义中间变量,用运算符“=”赋值的方式并不能实现
        运行结果报错:Error:(35, 17) java: 意外的类型
                                     需要: 变量
                                     找到:    值
         get()方法得到的是一个值,而运算符"="左边需要的是一个变量

        E e=list.get(x);
        list.get(x)=list.get(y);
        list.get(y)=e;
        */

        //解决办法:
        //先获取指定索引处的元素,再利用set(int index,Object obj)方法实现交换
     E a=list.get(x);
     E b=list.get(y);
     list.set(x,b);
     list.set(y,a);
    }
    public static <E> void print(ArrayList<E> list){
        for (E e: list) {
            System.out.println(e);
        }
    }
}

运行结果:

java使用Teigha库 java中temp怎么用_java使用Teigha库_03


总结:

实现交换就好比把两个桶里的水互换一下,不能直接倒,要再找一个桶把其中一个桶里的水倒到第三个桶,先将其腾空,才能放进去别的东西,进而实现交换。