Java交换数组元素
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交换数组元素的更多相关文章
- JavaScript下实现交换数组元素上下移动例子
// 交换数组元素 var swapItems = function(arr, index1, index2) { arr[index1] = arr.splice(index2, ...
- JavaScript 交换数组元素位置的几种方式
前言 交换数组元素位置是开发项目中经常用到的场景,总结下用过的几种方式. 第三方变量 最基础的方式,创建一个变量作为中转. let temp = array[index1]; array[index1 ...
- Java实现数组元素反转
package com.fgy.demo; /** * 数组元素反转 */ public class demo05 { public static void main(String[] args) { ...
- java 简单数组元素的增删改查
public class Test { static int[] a = new int[20]; static int n; public static void main(String[] arg ...
- 实现数组元素互换位置(乘机理解java参数传递)
Java中函数参数是按值传递的,在实现数组元素互换位置之前,我想先说一下Java函数参数传递过程.一般情况下我们会把参数分为基本数据类型和引用数据类型,然后分别来讲参数传递,因为他们的外在表现似乎是不 ...
- Java 数组元素逆序Reverse的三种方式
Java 数组元素逆序Reverse的三种方式 本文链接:https://blog.csdn.net/xHibiki/article/details/82930521 题目 代码实现 说明 int ...
- java 在循环中删除数组元素
在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...
- java数组元素的输出
java数组元素的输出 利用Arrays.toString(数组名即可) String[] name = {"Tom", "John", "Nike& ...
- 交换数组中两个元素的位置,元素包括key和value 一维数组
/*author: yangyu@sina.cndescription: 交换数组中两个元素的位置,元素包括key和value,具体用法见下面的例子*/$arr = array(11=>'a', ...
随机推荐
- netty系列之:netty实现http2中的流控制
目录 简介 http2中的流控制 netty对http2流控制的封装 Http2FlowController Http2LocalFlowController Http2RemoteFlowContr ...
- hdu 2795 Billboard(单点更新,区间查询)
题意: h*w的白板. 有n个广告牌,每个广告牌是1*wi.必须放置在白板的upmost中的leftmost. 输出n个广告牌放置在第几行.如果放不下,输出-1. 数据规格: h, w, and n ...
- HTML js 页面倒计时后跳转至新页面
HTML: 1 <body> 2 <p>操作错误!还有<span id="sp">5</span>秒跳转到交换机备份页面...< ...
- 算法学习->求解三角形最小路径及其值
00 问题 00-1 描述 对给定高度为n的一个整数三角形,找出从顶部到底部的最小路径和.每个整数只能向下移动到与之相邻的整数. 找到一个一样的力扣题:120. 三角形最小路径和 - 力扣(LeetC ...
- 【Go语言学习笔记】为什么要选择Go语言
一门语言的兴起一定有他的原因,所谓天下苦Java久矣,Go的到来可以说很多后端开发的福音,尤其是在微服务.分布式这么火的今天,那么,他的优势到底是什么呢? 首先,我们需要现有后端语言的优势痛点: 其实 ...
- CentOS服务器的网络配置与部署
1.系统安装与软件安装 1.1选择CentOs7.9release版本用作所研发系统部署服务器,官网以及所选择镜像为地址为:http://ftp.sjtu.edu.cn/centos/7.9.2009 ...
- vue监听器watch & 计算属性computed
侦听器watch vue中watch是用来监听vue实例中的数据变化 watch监听时有几个属性: handle:其值是一个回调函数,就是监听对象对话的时候需要执行的函数 deep:其值true 或者 ...
- python datetime 增减以月为单位的时间段
datetime.timedelta(days=10) # 可以 datetime.timedelta(months=1) # 不可以 替代: from datetime import date ...
- Java学习(二十一)
今天学的访问控制权限修饰符: 和c++比多了一个缺省,基本和c++功能一样,private多了一个同包的限制. 缺省的话是同包就可访问. 基本都学过,所以理解的也很快. 然后又把最近学得总结了一下: ...
- 问题 A: 大数阶乘
题目描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0<m<=5000) 输出 输出m的阶乘,并在输出结束之后输入一个换行 ...