java 泛型深入之Set实用工具 各种集合泛型深入使用示例,匿名内部类、内部类应用于泛型探讨(一)

2014-11-23 19:07:58 · 作者: · 浏览: 68

java 泛型深入之Set实用工具 各种集合泛型深入使用示例,匿名内部类、内部类应用于泛型探讨

//Sets.java
package org.rui.generics.set;

import java.util.HashSet;
import java.util.Set;
/**
 * 一个Set实用工具
 * @author lenovo
 *
 */
public class Sets {
	
	public static
  
    Set
   
     union(Set
    
      a,Set
     
       b) { Set
      
        result=new HashSet
       
        (a); result.addAll(b); return result; } //保留 相同 public static 
        
          Set
         
           intersection(Set
          
            a,Set
           
             b) { Set
            
              result=new HashSet
             
              (a); result.retainAll(b); return result; } // 差值 //去掉相同 public static 
              
                Set
               
                 difference(Set
                
                  a,Set
                 
                   b) { Set
                  
                    result=new HashSet
                   
                    (a); result.removeAll(b); return result; } //除了交集之外的所有过犹元素 public static 
                    
                      Set
                     
                       complement(Set
                      
                        a,Set
                       
                         b) { return difference(union(a,b),intersection(a,b)); } public static void main(String[] args) { Set
                        
                          result=new HashSet
                         
                          (); result.add("a"); result.add("b"); Set
                          
                            result2=new HashSet
                           
                            (); result2.add("b"); Set
                            
                              results=complement(result,result2); for(String s:results){ System.out.println(s); } } } 
                            
                           
                          
                         
                        
                       
                      
                     
                    
                   
                  
                 
                
               
              
             
            
           
          
         
        
       
      
     
    
   
  

//Watercolors.java
package org.rui.generics.set;

//水彩画
public enum Watercolors {
	ZINC,LEMON_TYLLOW,MEDIUM_YELLOW,DEEP_YELLOW,ORANGE,
	BRILLIANT_RED

}

//WatercolorSets.java
package org.rui.generics.set;

import java.util.EnumSet;
import java.util.Set;
/**
 * EnumSet 使用示例
 * @author lenovo
 *
 */
public class WatercolorSets {
	
	public static void main(String[] args) {
		Set
  
    set1=EnumSet.range(
				Watercolors.LEMON_TYLLOW,
				Watercolors.ORANGE
				);
		
		Set
   
     set2=EnumSet.range( Watercolors.ZINC, Watercolors.MEDIUM_YELLOW); System.out.println(set1); System.out.println(set2); //union System.out.println(" union 1 2:" +Sets.union(set1, set2)); //intersection System.out.println("intersection:"+Sets.intersection(set1, set2)); //difference 差异 System.out.println("difference1:"+Sets.difference(set1, set2)); System.out.println("difference2:"+Sets.difference(set2, set1)); //complement补足 System.out.println("complement:"+Sets.complement(set1, set2)); } } 
   
  

//Watercolors.java
package org.rui.generics.set;
import java.lang.reflect.Method;
import java.util.*;
/**
 * 我们可以从输出中看到各种关系运算的结果
 * 
 * @author lenovo
 *
 */
public class ContainerMethodDifferences {
	static Set
  
    methodSet(Class
    type)
	{
		Set
   
     result =new TreeSet
    
     (); for(Method m:type.getMethods()) result.add(m.getName()); return result; } static void interfaces(Class
      type) { System.out.println("interfaces in:"+type.getSimpleName()); List
     
       result=new ArrayList
      
       (); for(Class
        c:type.getInterfaces()) result.add(c.getSimpleName()); System.out.println("result:"+result); } static Set
       
         object=methodSet(Object.class); static{object.add("clone");} //difference static void difference(Class
         superset,Class
         subset) { System.out.println(superset.getSimpleName()+ " extends:"+subset.getSimpleName()); Set
        
          comp=Sets.difference( methodSet(superset), methodSet(subset)); comp.removeAll(object); System.out.println("object:"+comp); interfaces(superset); } //mian public static void main(String[] args) { /*System.out.println("collection:"+ methodSet(Collection.class)); interfaces(Collections.class);*/ System.out.println("----Set-----------------------------"); difference(Set.class,Collections.class); System.out.println("----HashSet-----------------------------"); d