一、泛型
1.为什么引入泛型?
package com. company01. generic;
import java. util. *;
public class GenericTest01 {
public static void main ( String[ ] args) {
Set s = new HashSet ( ) ;
A a1 = new A ( ) ;
B b1 = new B ( ) ;
C c1 = new C ( ) ;
s. add ( a1) ;
s. add ( b1) ;
s. add ( c1) ;
Iterator it = s. iterator ( ) ;
while ( it. hasNext ( ) ) {
Object o = it. next ( ) ;
if ( o instanceof A ) {
A a = ( A) o;
a. m1 ( ) ;
} else if ( o instanceof B ) {
B b = ( B) o;
b. m2 ( ) ;
} else if ( o instanceof C ) {
C c = ( C) o;
c. m3 ( ) ;
}
}
}
}
class A {
public void m1 ( ) {
System. out. println ( "A's m1()..." ) ;
}
}
class B {
public void m2 ( ) {
System. out. println ( "B's m2()..." ) ;
}
}
class C {
public void m3 ( ) {
System. out. println ( "C's m3()..." ) ;
}
}
2.泛型语法
2.1 List使用泛型
package com. company01. generic;
import java. util. *;
public class GenericTest02 {
public static void main ( String[ ] args) {
List< String> strs = new ArrayList < String> ( ) ;
strs. add ( "Jack" ) ;
strs. add ( "Tom" ) ;
strs. add ( "Tony" ) ;
strs. add ( "Smith" ) ;
Iterator< String> it = strs. iterator ( ) ;
while ( it. hasNext ( ) ) {
String s = it. next ( ) ;
System. out. println ( s) ;
}
}
}
2.2 Map使用泛型
package com. company01. generic;
import java. util. *;
public class GenericTest03 {
public static void main ( String[ ] args) {
Map< String, Integer> maps = new HashMap < String, Integer> ( ) ;
maps. put ( "西瓜" , 10 ) ;
maps. put ( "苹果" , 5 ) ;
maps. put ( "桃子" , 4 ) ;
maps. put ( "葡萄" , 8 ) ;
Set< String> keys = maps. keySet ( ) ;
Iterator it = keys. iterator ( ) ;
while ( it. hasNext ( ) ) {
String k = ( String) it. next ( ) ;
Integer v = maps. get ( k) ;
System. out. println ( k + "-->" + v) ;
}
}
}
2.3 SortedSet集合使用泛型
package com. company01. generic;
import java. util. *;
public class GenericTest04 {
public static void main ( String[ ] args) {
SortedSet< Manager> ss = new TreeSet < Manager> ( ) ;
Manager m1 = new Manager ( 1000 ) ;
Manager m2 = new Manager ( 1500 ) ;
Manager m3 = new Manager ( 900 ) ;
Manager m4 = new Manager ( 2000 ) ;
ss. add ( m1) ;
ss. add ( m2) ;
ss. add ( m3) ;
ss. add ( m4) ;
Iterator it = ss. iterator ( ) ;
while ( it. hasNext ( ) ) {
Manager m = ( Manager) it. next ( ) ;
System. out. println ( m) ;
}
}
}
class Manager implements Comparable < Manager> {
double sal;
Manager ( double sal) {
this . sal = sal;
}
public String toString ( ) {
return "Manager[sal:" + sal + "]" ;
}
public int compareTo ( Manager m) {
double sal1 = this . sal;
double sal2 = m. sal;
if ( sal1 < sal2) {
return - 1 ;
} else if ( sal1 > sal2) {
return 1 ;
} else {
return 0 ;
}
}
}
3. 自定义泛型
package com. company01. generic;
public class GenericTest05 {
public static void main ( String[ ] args) {
MyClass< String> mc = new MyClass < String> ( ) ;
mc. m1 ( "100" ) ;
}
}
class MyClass < T> {
public void m1 ( T t) {
System. out. println ( t) ;
}
}
二、增强for循环 foreach
package com. company01. generic;
import java. util. *;
public class ForeachTest01 {
public static void main ( String[ ] args) {
int [ ] a = { 1 , 2 , 3 , 4 , 5 , 6 , 76 } ;
for ( int i= 0 ; i< a. length; i++ ) {
System. out. println ( a[ i] ) ;
}
System. out. println ( "=================" ) ;
for ( int e : a) {
System. out. println ( e) ;
}
System. out. println ( "================" ) ;
Set< String> strs = new HashSet < String> ( ) ;
strs. add ( "张三" ) ;
strs. add ( "李四" ) ;
strs. add ( "王五" ) ;
strs. add ( "赵六" ) ;
for ( String name : strs) {
System. out. println ( name) ;
}
System. out. println ( "================" ) ;
List l = new ArrayList ( ) ;
l. add ( 1 ) ;
l. add ( 2 ) ;
l. add ( 3 ) ;
l. add ( 4 ) ;
for ( Object o : l) {
System. out. println ( o) ;
}
}
}
package com. company01. generic;
import java. util. *;
public class ForeachTest02 {
public static void main ( String[ ] args) {
Map< String, Integer> maps = new HashMap < String, Integer> ( ) ;
maps. put ( "西瓜" , 10 ) ;
maps. put ( "苹果" , 5 ) ;
maps. put ( "桃子" , 4 ) ;
maps. put ( "葡萄" , 8 ) ;
Set< String> keys = maps. keySet ( ) ;
for ( String k : keys) {
Integer v = maps. get ( k) ;
System. out. println ( k + "-->" + v) ;
}
}
}
package com. company01. generic;
public class ForeachTest03 {
public static void main ( String[ ] args) {
String[ ] ins = { "唱" , "跳" , "rap" , "篮球" } ;
StringBuffer sb = new StringBuffer ( ) ;
for ( String s : ins) {
sb. append ( s) ;
sb. append ( "," ) ;
}
System. out. println ( sb. substring ( 0 , sb. length ( ) - 1 ) ) ;
}
}