博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨...
阅读量:7071 次
发布时间:2019-06-28

本文共 9859 字,大约阅读时间需要 32 分钟。

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

//Sets.javapackage 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.javapackage org.rui.generics.set;//水彩画public enum Watercolors {	ZINC,LEMON_TYLLOW,MEDIUM_YELLOW,DEEP_YELLOW,ORANGE,	BRILLIANT_RED}
//WatercolorSets.javapackage 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.javapackage 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-----------------------------"); difference(HashSet.class,Set.class); System.out.println("----LinkedHashSet-----------------------------"); difference(LinkedHashSet.class,HashSet.class); System.out.println("----TreeSet-----------------------------"); difference(TreeSet.class,Set.class); System.out.println("-----List----------------------------"); difference(List.class,Collection.class); System.out.println("------ArrayList---------------------------"); difference(ArrayList.class,List.class); System.out.println("------LinkedList---------------------------"); difference(LinkedList.class,List.class); System.out.println("------Queue---------------------------"); difference(Queue.class,Collection.class); System.out.println("------PriorityQueue---------------------------"); difference(PriorityQueue.class,Queue.class); System.out.println("Map:"+methodSet(Map.class)); System.out.println("------HashMap---------------------------"); difference(HashMap.class,Map.class); System.out.println("------LinkedHashMap---------------------------"); difference(LinkedHashMap.class,HashMap.class); System.out.println("------TreeMap---------------------------"); difference(TreeMap.class,Map.class); //分类 System.out.println("------SortedMap---------------------------"); difference(SortedMap.class,Map.class); } }/*output:----Set-----------------------------Set extends:Collectionsobject:[toArray, iterator, remove, containsAll, contains, add, size, clear, isEmpty, retainAll, removeAll]interfaces in:Setresult:[Collection]----HashSet-----------------------------HashSet extends:Setobject:[]interfaces in:HashSetresult:[Set, Cloneable, Serializable]----LinkedHashSet-----------------------------LinkedHashSet extends:HashSetobject:[]interfaces in:LinkedHashSetresult:[Set, Cloneable, Serializable]----TreeSet-----------------------------TreeSet extends:Setobject:[lower, last, higher, descendingIterator, subSet, pollLast, comparator, pollFirst, floor, headSet, ceiling, tailSet, first, descendingSet]interfaces in:TreeSetresult:[NavigableSet, Cloneable, Serializable]-----List----------------------------List extends:Collectionobject:[get, set, listIterator, lastIndexOf, indexOf, subList]interfaces in:Listresult:[Collection]------ArrayList---------------------------ArrayList extends:Listobject:[trimToSize, ensureCapacity]interfaces in:ArrayListresult:[List, RandomAccess, Cloneable, Serializable]------LinkedList---------------------------LinkedList extends:Listobject:[offerFirst, removeFirstOccurrence, pop, peekLast, push, descendingIterator, poll, peek, removeFirst, pollLast, getFirst, offerLast, element, removeLast, offer, pollFirst, addLast, addFirst, peekFirst, getLast, removeLastOccurrence]interfaces in:LinkedListresult:[List, Deque, Cloneable, Serializable]------Queue---------------------------Queue extends:Collectionobject:[element, offer, poll, peek]interfaces in:Queueresult:[Collection]------PriorityQueue---------------------------PriorityQueue extends:Queueobject:[comparator]interfaces in:PriorityQueueresult:[Serializable]Map:[clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values]------HashMap---------------------------HashMap extends:Mapobject:[]interfaces in:HashMapresult:[Map, Cloneable, Serializable]------LinkedHashMap---------------------------LinkedHashMap extends:HashMapobject:[]interfaces in:LinkedHashMapresult:[Map]------TreeMap---------------------------TreeMap extends:Mapobject:[pollLastEntry, firstKey, floorEntry, ceilingEntry, lowerEntry, lastEntry, subMap, tailMap, navigableKeySet, higherEntry, lowerKey, headMap, firstEntry, comparator, descendingKeySet, descendingMap, pollFirstEntry, lastKey, higherKey, floorKey, ceilingKey]interfaces in:TreeMapresult:[NavigableMap, Cloneable, Serializable]------SortedMap---------------------------SortedMap extends:Mapobject:[tailMap, firstKey, headMap, comparator, lastKey, subMap]interfaces in:SortedMapresult:[Map]*/
---------------------------------------------------------------------------------------------------------------------------------------

//Generator.javapackage org.rui.generics.anonymity;public interface Generator
{ //返回泛型的内型对象 T next(); }
//Generators.javapackage org.rui.generics.anonymity;import java.util.Collection;/** * 利用生成器非常方便的填充一个collection * @author lenovo * */public class Generators {  public static
Collection
fill(Collection
coll,Generator
gen,int n) { System.out.println("gen.next():"+gen.next()); for(int i=0;i
//BankTeller.javapackage org.rui.generics.anonymity;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;import java.util.Random;/** * 匿名内部类 内部类 就用于泛型 *  generator 都生明成了static的,所以它们无法作为接口的一部分, *  由于无法用接口这样的特定的惯使用方法来泛化这二者。 *  虽然如此,它们fill()方法中都工作的非常好 *   * @author lenovo * */class Customer{	private static long counter=1;	private final long id=counter++;	private Customer(){}	public String toString(){return "Customer:"+id;}		//每次会创建一个新的客户对象	public static Generator
generator(){ return new Generator
(){ public Customer next(){return new Customer();} }; } } 出纳员 class Teller { private static long counter=1; private final long id=counter++; private Teller(){} public String toString(){return "Teller"+id;} //Teller就仅仅创建了一个public 的generator对象 public static Generator
generator=new Generator
() { public Teller next() { return new Teller(); } }; }// 出纳员public class BankTeller { public static void serve(Teller t,Customer c) { System.out.println(t+" serves "+c); } public static void main(String[] args) { Random random=new Random(47); //生成客户对象15个 Queue
line=new LinkedList
(); Generators.fill(line, Customer.generator(), 15); //出纳员对象4个 List
tellers=new ArrayList
(); Generators.fill(tellers, Teller.generator, 4); for(Customer c:line) serve(tellers.get(random.nextInt(tellers.size())),c); }} /*output: Teller3 serves Customer1 Teller2 serves Customer2 Teller3 serves Customer3 Teller1 serves Customer4 Teller1 serves Customer5 Teller3 serves Customer6 Teller1 serves Customer7 Teller2 serves Customer8 Teller3 serves Customer9 Teller3 serves Customer10 Teller2 serves Customer11 Teller4 serves Customer12 Teller2 serves Customer13 Teller1 serves Customer14 Teller1 serves Customer15 * *///:~~~

转载地址:http://wmzml.baihongyu.com/

你可能感兴趣的文章
【NetApp】snap autodelete设置
查看>>
如何添加自定义icon
查看>>
更新管理员密码后,SQL不能正常启动处理方法
查看>>
MySQL服务器变量二
查看>>
java第四次作业
查看>>
Dynamics CRM 请求服务时报access is denied错误
查看>>
HDU2017多校联合 contest 2
查看>>
在IIS上部署Analysis Services
查看>>
一个简单的webdynpro的ALV示例
查看>>
如何给手机网站封壳快速打包封装成APP?
查看>>
关于PTA平台上使用python2/3书写代码误判问题
查看>>
php中使用curl发送请求和图片压缩
查看>>
sharepoint webpart 普通用户无法访问
查看>>
3月4日作业点评
查看>>
转载--Linux命令top动态观察程序的变化
查看>>
中小型研发团队架构实践十:应用监控怎么做?
查看>>
Django model :add a non-nullable field 'SKU' to product without a default; we can't do that
查看>>
20.SSM整合-全注解开发
查看>>
让我欲罢不能的node.js
查看>>
js--webSocket入门
查看>>