Java 交换数组元素

代码示例

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors; /**
* @author zhkai
* @date 2021年3月30日14:09:29
*/
public class SwapElement {
/**
* 将数组下标为i和数组下标为j的两个数组元素进行交换
*
* @param nums 待交换数组
* @param i 需交换下标
* @param j 需交换下标
* @return 交换后的数组
*/
public static int[] swapElementOne(int[] nums, int i, int j) {
int item = nums[i];
nums[i] = nums[j];
nums[j] = item;
return nums;
} /**
* 将数组下标为i和数组下标为j的两个数组元素进行交换
*
* @param nums 待交换数组
* @param i 需交换下标
* @param j 需交换下标
* @return 交换后的数组
*/
public static int[] swapElementTwo(int[] nums, int i, int j) {
List<Integer> item = Arrays.stream(nums).boxed().collect(Collectors.toList());
Collections.swap(item, i, j);
int[] result = item.stream().mapToInt(Integer::valueOf).toArray();
return result;
} /**
* 将数组下标为i和数组下标为j的两个数组元素进行交换
*
* @param nums 待交换数组
* @param i 需交换下标
* @param j 需交换下标
* @return 交换后的数组
*/
public static int[] swapElementThree(int[] nums, int i, int j) {
nums[i] ^= nums[j];
nums[j] ^= nums[i];
nums[i] ^= nums[j];
return nums;
}
}

效率对比

输入:nums = {1, 2, 3, 4}; i=1; j=3;
方法一:2420500ns
方法二:163113800ns
方法三:20200ns

总结

  • 方法一:

    使用中间变量进行交换,不能直接进行交换。
  • 方法二:

    使用Collections.swap()方法进行交换,需要先将数组转换成List,交换完成后再转换成数组返回。
  • 方法三:

    使用位运算符进行交换。

    ^:如果相对应位值相同,则结果为0,否则为1

    C ^= C1 等价于 C = C^C1

Java交换数组元素的更多相关文章

  1. JavaScript下实现交换数组元素上下移动例子

    // 交换数组元素    var swapItems = function(arr, index1, index2) {        arr[index1] = arr.splice(index2, ...

  2. JavaScript 交换数组元素位置的几种方式

    前言 交换数组元素位置是开发项目中经常用到的场景,总结下用过的几种方式. 第三方变量 最基础的方式,创建一个变量作为中转. let temp = array[index1]; array[index1 ...

  3. Java实现数组元素反转

    package com.fgy.demo; /** * 数组元素反转 */ public class demo05 { public static void main(String[] args) { ...

  4. java 简单数组元素的增删改查

    public class Test { static int[] a = new int[20]; static int n; public static void main(String[] arg ...

  5. 实现数组元素互换位置(乘机理解java参数传递)

    Java中函数参数是按值传递的,在实现数组元素互换位置之前,我想先说一下Java函数参数传递过程.一般情况下我们会把参数分为基本数据类型和引用数据类型,然后分别来讲参数传递,因为他们的外在表现似乎是不 ...

  6. Java 数组元素逆序Reverse的三种方式

    Java 数组元素逆序Reverse的三种方式   本文链接:https://blog.csdn.net/xHibiki/article/details/82930521 题目 代码实现 说明 int ...

  7. java 在循环中删除数组元素

    在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...

  8. java数组元素的输出

    java数组元素的输出 利用Arrays.toString(数组名即可) String[] name = {"Tom", "John", "Nike& ...

  9. 交换数组中两个元素的位置,元素包括key和value 一维数组

    /*author: yangyu@sina.cndescription: 交换数组中两个元素的位置,元素包括key和value,具体用法见下面的例子*/$arr = array(11=>'a', ...

随机推荐

  1. Shadertoy 教程 Part 3 - 矩形和旋转

    Note: This series blog was translated from Nathan Vaughn's Shaders Language Tutorial and has been au ...

  2. python write() argument must be str, not bytes

    python pickle from __future__ import absolute_import from __future__ import division from __future__ ...

  3. 深入了解Mybatis架构设计

    架构设计 我们可以把Mybatis的功能架构分为三层: API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库.接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理. ...

  4. PE头详细分析

    目录 PE头详细分析 0x00 前言 0x01 PE文件介绍 0x02 PE头详细分析 DOS头解析 NT头解析 标准PE头解析 可选PE头解析 可选PE头结构 基址 代码段地址 数据段地址 OEP程 ...

  5. JMeter源码导入到Intellij IDEA (八)

    亲测:jmeter源码导入Intellij IDEA,导入,编译,运行! 一.环境:windows10操作系统,jdk1.8,Intellij IDEA 2018.3,jmeter5.0 下载jmet ...

  6. MySQL基础学习——SQL对数据库进行操作、对数据库的表进行操作

    1.SQL对数据库进行操作: 创建数据库: 语法: create database 数据库名称 [character set 字符集 collate 字符集校对规则];字符集校对规则即所用字符集的数据 ...

  7. thread pool

    thread pool import concurrent.futures import urllib.request URLS = ['http://www.foxnews.com/', 'http ...

  8. 部署一个支持Dapr 的Kubernetes APISIX Ingress

    在这篇文章中,我将展示如何创建一个 APISIX控制器,该控制器在 Kubernetes 集群中公开启用 Dapr 的应用程序. 本质上,APISIX控制器将配置相同的标准 Dapr annotati ...

  9. Nginx通过ngx_http_limit_req_module实现限制请求数、限速、白名单

    /etc/nginx/limit/white_list:白名单,key-value形式,支持掩码网段 #test 192.168.50.42 0; 192.168.50.0/24 0; /etc/ng ...

  10. 算法学习->整数拆分问题

    动态规划典型题目/ 00 题目 将正整数n无需拆分为最大数为k的拆分方案有多少种?​要求所有的拆分方案不重复. 示例: 输入:n=5,k=5 输出:(5,5)=7 示例分析: 5=5 5=4+1 5= ...