zoukankan      html  css  js  c++  java
  • 获取两个数组相同元素,不同元素,及相同元素不同元素新数组

    废话不多说直接上代码!

    
    
    		/**
    		 * 获取两个数组相同元素
    		 * @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+"	");  
    	        }  
    	        
    	  }  
    	
    
    
    
  • 相关阅读:
    nyoj 139 我排第几个--康拓展开
    树形dp--hdu 3534 Tree
    hdu 2196 Computer 树形dp模板题
    poj 2342 Anniversary party 简单树形dp
    hdu 4738 Caocao's Bridges 图--桥的判断模板
    poj 1144 Network 图的割顶判断模板
    poj 3159 Candies 差分约束
    poj 3169 Layout 差分约束模板题
    codeforces C. Triangle
    java中过滤器、监听器、拦截器的区别
  • 原文地址:https://www.cnblogs.com/userzf/p/10742123.html
Copyright © 2011-2022 走看看