java 从两个数组中选出相同和不同的值,java数组比较

本文展示了一个使用Java实现的二分搜索法示例,该示例通过比较两个字符串数组中的元素来查找相同项,并打印出存在于两个数组中的元素。
	public static void main(String[] args) {
		
		String[] oldimg = {"a","b","c","d"};
		String[] newimg = {"a","d"};
		
		for (String o : newimg) {
			/*
			 * 筛选出两个数组中相同的值,>= 0 表示相同,< 0 表示不同 。
			 * 有相同值是返回元素的下标值。
			 * 此处采用的是 "二分搜索法来搜索指定数组"。
			 * */
			if(Arrays.binarySearch(oldimg, o) >= 0){
				System.out.println(o);
			}
		}

	}

### 实现方法 为了从数组中随机选择两个相同的数字,可以采用多种编程语言来完成这一任务。以下是几种常见语言的具体实现方式。 #### MATLAB 实现 MATLAB 提供了 `randperm` 函数,该函数能够生成指定范围内的无重复随机排列。通过调用此函数并提取前两个元素即可满足需[^1]。 ```matlab A = [1, 2, 3, 4, 5]; % 定义数组 A indices = randperm(length(A)); % 获取长度范围内随机索引 result = A(indices(1:2)); % 取前两个不同元素作为结果 disp(result); % 显示结果 ``` #### Java 实现 Java 中可以通过创建一个随机数生成器对象,并利用循环排除已选中的数字直到选出两个不同的数字为止[^2][^5]。 ```java import java.util.ArrayList; import java.util.List; import java.util.Random; public class Main { public static void main(String[] args) { int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 输入数组 List<Integer> resultList = new ArrayList<>(); Random randomGenerator = new Random(); while (resultList.size() < 2){ Integer candidateNumber = array[randomGenerator.nextInt(array.length)]; if (!resultList.contains(candidateNumber)){ resultList.add(candidateNumber); } } System.out.println("Selected Numbers:" + resultList.get(0)+", "+ resultList.get(1)); } } ``` #### Python 实现 Python 的标准库提供了非常方便的方法——`random.sample()` 来直接解决这个问题[^3]。 ```python import random def select_two_distinct_random_elements(input_array): selected_pair = random.sample(input_array, k=2) return selected_pair input_list = list(range(10)) # 创建测试数据集 [0..9] output_result = select_two_distinct_random_elements(input_list) print(output_result) ``` #### Shell 脚本实现 对于 shell 编程环境而言,则需借助外部工具如 awk 或者 bash 自带功能配合处理逻辑达成目标[^4]: ```bash #!/bin/bash ARRAY=(0 1 2 3 4 5 6 7 8 9 ) LEN=${#ARRAY[@]} RAND1=$((RANDOM%LEN)) RAND2=$((( RANDOM%LEN )) ) while [[ $RAND1 -eq $RAND2 ]]; do RAND2=$((RANDOM%LEN )) done echo ${ARRAY[RAND1]} ${ARRAY[RAND2]} ``` 以上各段代码分别展示了如何在不同环境下高效地完成题目所描述的任务操作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值