迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的交换方法

作者:迹忆客 最近更新:2023/03/26 浏览次数:

swap() 方法用于交换 Java 中两个元素、字符或对象的位置。这个方法可以应用于一个列表、一个字符串或一个对象。在本文中,我们将讨论 swap() 方法在的使用。

  1. 交换列表中的两个元素
  2. 交换字符串中的两个字符
  3. 交换两个对象

使用 swap 方法交换 Java 列表中的两个元素

该方法用于在不影响列表中其他元素的情况下,交换定义位置上的两个特定元素。如果指定的索引之一高于列表的大小,那么该方法将返回一个 out of bound 异常。swap() 将给出一个包含交换的索引中元素的列表输出。

语法

public static void swap(List mylist, int m, int n)

该方法使用三个参数作为参数-将应用 swap() 方法的列表和要交换的两个索引。

代码示例:

import java.util.Collections;
import java.util.ArrayList;

public class PerformSwap {
    public static void main(String[] args) {
        ArrayList<String> lettersList = new ArrayList<String>();
        lettersList.add("a");
        lettersList.add("b");
        lettersList.add("c");
        lettersList.add("d");
        lettersList.add("e");
        lettersList.add("f");
        lettersList.add("g");
        System.out.println("Original List: " + lettersList); 
        Collections.swap(lettersList, 0, 6);
        System.out.println("\nSwapped List: " + lettersList); 
    }
}

输出:

Original List: [a, b, c, d, e, f, g]

Swapped List: [g, b, c, d, e, f, a]

在上面的例子中,我们将索引 6 上的字母 g 和索引 0 上的字母 a 进行了交换。swap 方法只交换了这两个字母,而没有干扰任何其他列表元素。


交换 Java 字符串中的两个字符

字符串值的一个主要属性是它是不可变的,也就是说它不能被改变。为了执行交换操作,我们首先要将 String 对象复制到 StringBuilder 或字符数组中。这两种数据类型允许我们对复制的对象进行交换操作。下面,我们将使用 char 数组和 StringBuilder 执行交换操作,以创建一个新的字符串和交换字符。

在 Java 中使用 char 数组执行字符串互换操作

swap 方法有三个参数-我们要执行交换的字符串和我们要交换的字符的两个索引。为了执行字符交换,我们首先创建一个临时字符存储对象-tempo。这个临时对象在我们将第一个字符替换为第二个字符时,将其存储起来,然后将这个字符传递给第二个字符,完成交换过程。

其中涉及三个步骤:

  • 将 String 转换为 char 数组对象; 2.
  • 获取对象的长度
  • 交换 char 数组的索引

代码示例。

public class SwapString {
    static char[] swap(String mystring, int i, int j)
    {
        char ch[] = mystring.toCharArray();
        char tempo = ch[i];
        ch[i] = ch[j];
        ch[j] = tempo;
        return ch;
    }
  
    public static void main(String args[])
    {
        String theS = "Favourite";

        System.out.println(swap(theS, 5, 2));
        System.out.println(swap(theS, 0, theS.length() - 1));
        System.out.println(theS);
    }
}

输出:

Farouvite
eavouritF
Favourite

在 Java 中使用 StringBuilder 执行字符串交换

代码示例。

public class SwapString {
    static String swap(String mystring, int i, int j) 
    {
        StringBuilder mysb = new StringBuilder(mystring); 
        mysb.setCharAt(i, mystring.charAt(j)); 
        mysb.setCharAt(j, mystring.charAt(i)); 
        return mysb.toString(); 
    } 
  
    public static void main(String args[]) 
    {
        String theS = "Favorite";
  
        System.out.println(swap(theS, 5, 2)); 
        System.out.println(swap(theS, 0, theS.length() - 1)); 
  
        // Original String 
        System.out.println(theS); 
    } 
}

输出:

Faiorvte
eavoritF
Favorite

交换 Java 中的两个对象

swap 方法也可用于交换两个对象的属性。对象交换可以在一个属性的对象上进行,也可以在多个属性的对象上进行。

交换具有一个属性的对象

假设我们有一个名为 House 的类,它有一些属性,如卧室的数量和浴室的数量。让我们创建两个 House 的对象-house1house2House 只有一个属性-value。我们的目标是交换 house1house2 的数据。

代码示例:

public class SwapObjects{
    public static void swap(House house1, House house2){
        House temp = house1;
        house1 = house2;
        house2 = temp;
    }
   
    public static void main(String[] args) {
        House house1 = new House();
        House house2 = new House();

        house1.value = 5;
        house2.value = 2;

        //swap using objects
        swap(house1, house2);
        System.out.println(house1.value +", " + house2.value);
    }
}
class House {
    public int value;
}

输出:

5, 2

在 Java 中交换对象有一个以上的属性

我们使用一个 Wrapper 类来交换两个有多个属性的对象的属性。如果我们在不使用封装类的情况下进行交换,函数 swap 只会创建一个对象引用的副本。

public class SwapObjects{
    public static void main(String[] args) {
        House house1 = new House(5, 3);
        House house2 = new House(2, 1);
      
        Wrapper whs1 = new Wrapper(house1);
        Wrapper whs2 = new Wrapper(house2);

        //swap using wrapper of objects
        swap(whs1,whs2);
        whs1.house.print(); 
        whs2.house.print(); 
    }

    public static void swap(Wrapper whs1, Wrapper whs2){
        House temp = whs1.house;
        whs1.house = whs2.house;
        whs2.house = temp;
    }
}
class House 
{ 
    int bedroom, bathroom; 
  
    // Constructor 
    House(int bedroom, int bathroom) 
    {
        this.bedroom = bedroom; 
        this.bathroom = bathroom; 
    } 
  
    // Utility method to print object details 
    void print() 
    {
        System.out.println("bedrooms = " + bedroom +  
                        ", bathrooms = " + bathroom); 
    } 
} 
class Wrapper {
    House house;
    Wrapper(House house){ this.house = house;}
}

输出:

bedrooms = 2, bathrooms = 1
bedrooms = 5, bathrooms = 3

即使成员的类不给用户类访问权,包装类也会交换对象。在对对象应用 swap() 方法时,可以根据对象中的属性数量来选择使用的方法。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Java 中获取文件大小

发布时间:2023/05/01 浏览次数:139 分类:Java

Java 提供了不同的方法来获取文件的字节大小。 本教程演示了在 Java 中获取文件大小的不同方法。使用 Java IO 的文件类获取文件大小 Java IO 包的 File 类提供了以字节为单位获取文件大小的功能。

Java 中的文件分隔符

发布时间:2023/05/01 浏览次数:108 分类:Java

本篇文章介绍了 Java 中的文件分隔符。Java 中的文件分隔符 文件分隔符是用来分隔目录的字符; 例如,Unix 使用 /,Windows 使用 \ 作为文件分隔符。

Java 中的文件过滤器

发布时间:2023/05/01 浏览次数:193 分类:Java

本篇文章介绍如何在 Java 中使用 FileFilter。FileFilter 用于过滤具有特定扩展名的文件。 Java内置包IO和Apache Commons IO为FileFilter提供了类和接口来进行文件过滤操作。

Java 获取 ISO 8601 格式的当前时间戳

发布时间:2023/05/01 浏览次数:132 分类:Java

本篇文章介绍了 ISO 8601 日期格式、其重要性及其在 Java 中的使用。 它还列出了一些优点来强调为什么应该使用 ISO 格式来表示日期。

在 Java 中获取数组的子集

发布时间:2023/05/01 浏览次数:142 分类:Java

本篇文章介绍了几种在 Java 中获取数组子集的方法。使用 Arrays.copyOf() 方法获取数组的子集 使用 Arrays.copyOfRange() 方法获取数组的子集

用 Java 填充二维数组

发布时间:2023/05/01 浏览次数:110 分类:Java

二维数组是基于表结构的,即行和列,填充二维数组不能通过简单的添加到数组操作来完成。 本篇文章介绍如何在 Java 中填充二维数组。

Java 中的自然排序

发布时间:2023/05/01 浏览次数:132 分类:Java

Java 中最常用的顺序是自然顺序。 本文将展示如何使用 naturalOrder() 函数对数组进行排序。

计算 Java 数组中的重复元素

发布时间:2023/05/01 浏览次数:202 分类:Java

本篇文章介绍Java计算数组中重复元素的方法。计算 Java 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。

Java 中 List 和 Arraylist 的区别

发布时间:2023/05/01 浏览次数:90 分类:Java

表示为单个单元的一组单个对象称为集合。 在 Java 中,Collection 是一个具有多个已定义接口和类的框架,用于将一组对象表示为一个单元。 它允许我们操纵

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便