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