看视频自学Java泛型
2017-03-20 12:43
204 查看
1.泛型
代码:
/**
* 泛型
* @author Boom
*
*/
public class Demo1 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("aaa");
Integer i = (Integer) list.get(0);
//区别,使用泛型避免转换错误
List<String> list1 =new ArrayList<String>();
list1.add("aaaa");
list1.get(0);
}
}
=============================================================
2.用传统方法和for的增强式遍历使用泛型的集合或数组
低级程序员使用高级程序员的代码
代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hamcrest.core.Is;
import org.junit.Test;
/**
* 泛型
* @author Boom
*
*/
public class Demo2 {
@Test
public void test1(){
List<String> list =new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
//传统
Iterator it = list.iterator();
while(it.hasNext()){
String value =(String) it.next();
System.out.println(value);
}
//增强for
for(String s : list){
System.out.println(s);
}
}
@Test
public void test2(){
//模拟数据
Map<Integer, String> map = new LinkedHashMap<Integer,String>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3, "ccc");
//传统 keyset 或者 entryset
Set<Map.Entry<Integer, String>> set = map.entrySet();
Iterator<Map.Entry<Integer, String>> it = set.iterator();
while(it.hasNext()){
Map.Entry<Integer, String> entry = it.next();
int key =entry.getKey();
String value =entry.getValue();
System.out.println(key+"="+value);
}
//增强for
for(Map.Entry<Integer, String> entry:map.entrySet()){
int key =entry.getKey();
String value =entry.getValue();
System.out.println(key+"="+value);
}
}
/**
* 泛型,低级程序员 能 使用高级程序员代码
*/
@Test
public void test3(){
//用泛型时,如果两天都使用到泛型,两边必须要一样
// ArrayList<Object> list = new ArrayList<String>();
// ArrayList<String> list = new ArrayList<String>();
//相当于低级程序员能使用高级程序员代码
ArrayList<String> list = new ArrayList();
ArrayList list1 = new ArrayList<String>();
}
}
=============================================================
3.泛型的擦除 (就是简写)
/**
* 泛型的擦除
* @author Boom
*
*/
public class Demo3 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
}
}
===============================================================
4.自定义泛型方法 (<T>是对参数的声明)
代码:
/**
* 自定义泛型方法
* @author Boom
* @param <V>
*
*/
public class Demo5 {
public void testa(){
a("aaaa");
}
//<T> 是声明
public <T> T a(T t){
return null;
}
//可以定义多个泛型
public <T,E,K,V> void b(T t,E e,K k,V v){
}
}
=================================================================
5.自定义泛型--泛型类和反射泛型 (其实,就是在4的基础上把方法前的声明迁移到类上)
/**
* 自定义泛型--泛型类和反射泛型
* @author Boom
* @param <V>
*
*/
//可以把方法上的声明放到类上
public class Demo6<T,E,K,V> {
public void testa(){
//a("aaaa");
}
public T a(T t){
return null;
}
public void b(T t,E e,K k,V v){
}
//静态方法
public static <T> void c(T t){
}
}
=================================================================
6.用泛型自定义个数组内元素互换的泛型方法
public class Demo7 {
//
a681
编写一个泛型方法,实现指定位置上的数组元素的交换
public <T> void swap(T arr[], int pos1, int pos2) {
T temp = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = temp;
}
// 编写一个泛型方法,接收一个任意数组,并颠倒数组中的所有元素
public <T> void reverse(T arr[]) {
int start = 0;
int end = arr.length - 1;
while (true) {
if (start >= end) {
break;
}
T temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
}
总结:这个在架构方面用的比较多,就相当于低级程序员用高级程序员的代码。
代码:
/**
* 泛型
* @author Boom
*
*/
public class Demo1 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("aaa");
Integer i = (Integer) list.get(0);
//区别,使用泛型避免转换错误
List<String> list1 =new ArrayList<String>();
list1.add("aaaa");
list1.get(0);
}
}
=============================================================
2.用传统方法和for的增强式遍历使用泛型的集合或数组
低级程序员使用高级程序员的代码
代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hamcrest.core.Is;
import org.junit.Test;
/**
* 泛型
* @author Boom
*
*/
public class Demo2 {
@Test
public void test1(){
List<String> list =new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
//传统
Iterator it = list.iterator();
while(it.hasNext()){
String value =(String) it.next();
System.out.println(value);
}
//增强for
for(String s : list){
System.out.println(s);
}
}
@Test
public void test2(){
//模拟数据
Map<Integer, String> map = new LinkedHashMap<Integer,String>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3, "ccc");
//传统 keyset 或者 entryset
Set<Map.Entry<Integer, String>> set = map.entrySet();
Iterator<Map.Entry<Integer, String>> it = set.iterator();
while(it.hasNext()){
Map.Entry<Integer, String> entry = it.next();
int key =entry.getKey();
String value =entry.getValue();
System.out.println(key+"="+value);
}
//增强for
for(Map.Entry<Integer, String> entry:map.entrySet()){
int key =entry.getKey();
String value =entry.getValue();
System.out.println(key+"="+value);
}
}
/**
* 泛型,低级程序员 能 使用高级程序员代码
*/
@Test
public void test3(){
//用泛型时,如果两天都使用到泛型,两边必须要一样
// ArrayList<Object> list = new ArrayList<String>();
// ArrayList<String> list = new ArrayList<String>();
//相当于低级程序员能使用高级程序员代码
ArrayList<String> list = new ArrayList();
ArrayList list1 = new ArrayList<String>();
}
}
=============================================================
3.泛型的擦除 (就是简写)
/**
* 泛型的擦除
* @author Boom
*
*/
public class Demo3 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
}
}
/** * 泛型的擦除 * @author Boom * */ public class Demo4 { public static void main(String[] args) { ArrayList list = new ArrayList(); } }
===============================================================
4.自定义泛型方法 (<T>是对参数的声明)
代码:
/**
* 自定义泛型方法
* @author Boom
* @param <V>
*
*/
public class Demo5 {
public void testa(){
a("aaaa");
}
//<T> 是声明
public <T> T a(T t){
return null;
}
//可以定义多个泛型
public <T,E,K,V> void b(T t,E e,K k,V v){
}
}
=================================================================
5.自定义泛型--泛型类和反射泛型 (其实,就是在4的基础上把方法前的声明迁移到类上)
/**
* 自定义泛型--泛型类和反射泛型
* @author Boom
* @param <V>
*
*/
//可以把方法上的声明放到类上
public class Demo6<T,E,K,V> {
public void testa(){
//a("aaaa");
}
public T a(T t){
return null;
}
public void b(T t,E e,K k,V v){
}
//静态方法
public static <T> void c(T t){
}
}
=================================================================
6.用泛型自定义个数组内元素互换的泛型方法
public class Demo7 {
//
a681
编写一个泛型方法,实现指定位置上的数组元素的交换
public <T> void swap(T arr[], int pos1, int pos2) {
T temp = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = temp;
}
// 编写一个泛型方法,接收一个任意数组,并颠倒数组中的所有元素
public <T> void reverse(T arr[]) {
int start = 0;
int end = arr.length - 1;
while (true) {
if (start >= end) {
break;
}
T temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
}
总结:这个在架构方面用的比较多,就相当于低级程序员用高级程序员的代码。
相关文章推荐
- 传智播客java培训2010年4月18java高新技术3,张孝祥老师视频自学总结
- Java自学全套视频(jse,jee,ssh,android,oracle,linux,html,js,jQuery等)下载地址
- Java自学视频整理
- Java中泛型(1)——泛型介绍(传智播客毕老师视频讲解)
- Java自学视频教程推荐
- Java基础视频笔记(四):泛型
- 黑马自学视频之——java基础——集合框架
- java自学视频汇总
- Java自学视频整理(持续更新中...)
- Java中泛型(4)——泛型接口(传智播客毕老师视频讲解)
- Java自学视频整理(持续更新中...)
- Java自学视频整理(持续更新中...)
- 自学v512工作室_刘伟_Java高端培训系列视频_log4j遇到的问题
- [置顶] Java自学视频整理(持续更新中...)
- Java自学视频整理(持续更新中...)
- 2010年4月自学北京动力节点JAVA WEB --DRP视频总结
- Java自学视频整理(持续更新中...)
- java自学视频
- Java自学视频集结
- Java中泛型(5)——泛型限定(传智播客毕老师视频讲解)