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

来源:互联网 发布:深圳网站建设方维网络 编辑:程序博客网 时间:2024/06/07 19:30
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);}}

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

                        

阅读全文
0 0
原创粉丝点击