java-两个数组,寻找多出来的元素

package test;

import java.util.ArrayList;
import java.util.List;

public class Test1 {

	public static void main(String[] args) {

		int[] array1 = { 1, 34, 65, 89, 143, 38, 20, 183 };
		int[] array2 = { 20, 1, 65, 183, 38, 89, 34 };

		// 第一种方式:分别把两个数组的值放到两个不同的list集合中,使用removeAll方法进行去重
		List<Integer> list1 = new ArrayList<Integer>();
		List<Integer> list2 = new ArrayList<Integer>();
		for (int i = 0; i < array1.length; i++) {
			list1.add(array1[i]);
		}
		for (int j = 0; j < array2.length; j++) {
			list2.add(array2[j]);
		}
		list1.removeAll(list2);
		System.out.println("第一种方式:" + list1.get(0));

		// 第二种方式:分别把两个数组的值求和,并把两个结果相减,然后使用Math.abs()方法取绝对值
		int sum1 = 0;
		int sum2 = 0;
		for (int i = 0; i < array1.length; i++) {
			sum1 += array1[i];
		}
		for (int j = 0; j < array2.length; j++) {
			sum2 += array2[j];
		}
		System.out.println("第二种方式:" + Math.abs(sum1 - sum2));

		// 第三种方式:使用^:异或
		// 异或的性质:两个相同的数异或结果一定为0,把两个数组里的元素都进行异或,得到的结果就是所求的结果
		int c = 0;
		for (int i = 0; i < array2.length; i++) {
			// 按照数组短的数组进行异或
			c ^= array2[i] ^ array1[i];
		}
		// 数组长的剩余的那个元素,与之前结果进行异或,得到最后结果
		c ^= array1[array1.length - 1];
		System.out.println("第三种方式:" + c);

		System.out.println("---------------------------------");
		// 使用异或的这个特性进行字符串加密测试
		String str = "加密测试密码";
		System.out.println("原始密码:"+str);
		String passwordNew = "";
		String passwordOld = "";
		int key = 0xAB;
		for (int i = 0; i < str.length(); i++) {
			passwordNew += (char) (str.charAt(i) ^ key);
		}
		System.out.println("加密后密码:"+passwordNew);
		for (int i = 0; i < passwordNew.length(); i++) {
			passwordOld += (char) (passwordNew.charAt(i) ^ key);
		}
		System.out.println("还原原始密码:"+passwordOld);
	}
}

本文共展示三种方式,以及异或方式的一种加密延展测试,得到的结果如下图所示:

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值