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

Posted 张什么锋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取两个数组相同元素,不同元素,及相同元素不同元素新数组相关的知识,希望对你有一定的参考价值。

废话不多说直接上代码!



        /**
         * 获取两个数组相同元素
         * @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");  
            }  
            
      }  
    

以上是关于获取两个数组相同元素,不同元素,及相同元素不同元素新数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP分割两个数组的相同元素和不同元素的两种方法

JS取出两个数组中的不同或相同元素

从不同功能但相同类访问数组元素

如何获取两个数组相同元素

php如何删除两个数组中相同的元素

找出两个数组中不相同的元素