获取两个数组相同元素,不同元素,及相同元素不同元素新数组

废话不多说直接上代码!



        /**
         * 获取两个数组相同元素
         * @param a
         * @param b
         * @return
         */
        public static <T> Set<T> getIds(T[] a, T[] b){
              Set<T> same = new HashSet<T>();  //用来存放两个数组中相同的元素
              Set<T> temp = new HashSet<T>();  //用来存放数组a中的元素  

              for (int i = 0; i < a.length; i++) {
                  temp.add(a[i]);   //把数组a中的元素放到Set中,可以去除重复的元素
              }  

              for (int j = 0; j < b.length; j++) {
                //把数组b中的元素添加到temp中
                //如果temp中已存在相同的元素,则temp.add(b[j])返回false
                if(!temp.add(b[j]))
                    same.add(b[j]);
            }
            return same;
          }  

        /**
         * 获取两个数组中不相同元素
         * @param t1
         * @param t2
         * @return
         */
        public static <T> List<T> compare(T[] t1, T[] t2) {
          List<T> list1 = Arrays.asList(t1); //将t1数组转成list数组
          List<T> list2 = new ArrayList<T>();//用来存放2个数组中不相同的元素
          for (T t : t2) {
              if (!list1.contains(t)) {
                  list2.add(t);
              }
          }
          return list2;
      }

        /**
         * 获取 两个数组不重复的元素值
         * @param array1
         * @param array2
         * @return
         */
        public static <T> List<T> getArrOnlyValue(T[] array1, T[] array2) {
           List<T> R_arr = new ArrayList<T>();
           Set<T> sameElementSet = getIds(array1,array2);
           for(T i : sameElementSet) {
               R_arr.add(i);
           }
           List<T> list = compare(array1,array2);
           for (int i = 0; i < array2.length; i++) {
               R_arr.add(list.get(i));
           }
           return R_arr;
        }

      public static void main(String[] arg){
         String[] array1 = {"1","2","3","4","1","2","4","6","7","8","10","22","33"};  

            String[] array2 = {"1","2","3","4","1","2","4","6","7","8","10","22","33","55","66","77","88","99"};  

            Set<String> sameElementSet = getIds(array1,array2);  

            List<String> arr = new ArrayList<String>();

            for(String i : sameElementSet) {
                arr.add(i);
                System.out.println(i);
            }   

            System.out.println("----------------------------");

            List<String> list = compare(array1,array2);
            for (String str : list) {
                arr.add(str);
                //System.out.println(str);
            }  

            for (String str : arr) {
                System.out.print(str+"\t");
            }  

      }  

原文地址:https://www.cnblogs.com/userzf/p/10742123.html

时间: 2024-08-27 23:24:39

获取两个数组相同元素,不同元素,及相同元素不同元素新数组的相关文章

089-PHP数组运用 - 通过循环函数取出部分成员合并成新数组

<?php function myfunc($arr){ //定义过滤函数 $j=count($arr); for($i=0;$i<$j;$i++){ if($arr[$i]>=0&&$arr[$i]<=100) $n_arr[]=$arr[$i]; } return $n_arr; } $arr=array(2,34,5,175,168,94,942,105); echo '原来的数组信息:<br />'; print_r($arr); $newarr

javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除splice(需明确位置) 9.数组遍历 10.jQuery根据元素值删除数组元素的方法 数组常见操作包含了 增.删.查.改.插入.交集.并集 1.数组整体元素修改 //map,给数组每个元素加1 输出[1,2,3] $.map([0,1,2],function(n){ return n+1; })

OC中动态创建可变数组的问题.有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).两种方法

<span style="font-size:24px;">//////第一种方法 // NSMutableArray *arr = [NSMutableArray array]; // for (int i = 0; i < 13; i ++) { // [arr addObject:[NSString stringWithFormat:@"lanou%d",i + 1]]; // } // NSLog(@"%@",arr);

获取两个List的不同元素

获取两个List的不同元素 /**   * 几种不同的方法,查询效率不同  *getDiffrent5()效率最高  */   import java.util.ArrayList;   import java.util.HashMap;   import java.util.List;   import java.util.Map;      /**   * 获取两个List集合中的不相同的对象   */   public class Test2ListDiff {          publ

C# Linq获取两个List或数组的差集交集

List<int> list1 = new List<int>(); list1.Add(1); list1.Add(2); list1.Add(3); List<int> list2 = new List<int>(); list2.Add(3); list2.Add(4); list2.Add(5); //得到的结果是4,5 即减去了相同的元素. List<int> list3 = list2.Except(list1).ToList();

【编程题目】有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;(需要回头仔细研究)

32.(数组.规划)有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序:要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小.例如: var a=[100,99,98,1,2,3];var b=[1,2,3,4,5,40]; 首先,目标一定是先找到n个数字,使得数字和比总和的一半小,但是最接近. 思路一:开始看这道题跟之前学的动态规划很像,就想用动态规划来解.但是....做不出来........... 必须要选一半的数字让我头都大了. 思路二:

php数组操作,删除第一个和最后一个元素

对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作. (1)使用 array_pop 删除数组的最后一个元素,例如: $user=array('apple','banana','orange'); $result=array_pop($user); print_r($result); print_r($user); 结果将是: orange array(

数组 将一个数组的元素和另一个素组的元素相加,然后赋给第三个数组

    在20 - 40中去十个元素,赋给两个数组a,b,然后将它们的其中的十个元素相加,得到的结果赋给数组c.    int a[10] = {0},b[10] = {10},c[10]= {0};     for (int i = 0; i < 10; i++) {          a[i] = arc4random()%(40 - 20 +1) + 20;          b[i] = arc4random()%(40 - 20 +1) + 20;         c[i] = a[i

[微软]有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小_利用排列组合思路解决_python版

(原题出自微软公司面试题)问题如下:有两个序列a,b,大小都为n,序列元素的值任意整数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小.例如:a=[100,99,98,1,2, 3]b=[1, 2, 3, 4,5,40] 题目是看到QQ群友发的,网上也百度了下目前已经有好几种解法了.写了半天有点晕,后面忽然想到中学时候数学里面的排列组合的方法.方法对于较短的list可行,长list组合情况太多,可能耗时太长或溢出. 1 from itertools im