1. 泛型
1. 泛型
泛型是一种数据安全的做法,限制了集合中元素的类型
ArrayList<String> objects = new ArrayList<>();
/**
* <E> 元素
* <T> 类型
* <K,V> 键值
* <N,V> 名值
* @param <E>
*/
public class MyArrayList<E> {
public void add(E e){}
}
2. 泛型的应用(接口)
通用管理系统的接口(增删改查)
package com.wz.genericity_02;
public interface IManagerSystem<T> {
public int add(T t);
public int delete(T t);
public int update(T t,int type,Object val);
public T[] getAll();
public T[] get(Object... params);
public void expansion();
}
StudentManagerSystem 接口实现
package com.wz.genericity_02;
public class StudentManagerSystem implements IManagerSystem<Student>{
@Override
public int add(Student student) {
return 0;
}
@Override
public int delete(Student student) {
return 0;
}
@Override
public int update(Student student, int type, Object val) {
return 0;
}
@Override
public Student[] getAll() {
return new Student[0];
}
@Override
public Student[] get(Object... params) {
return new Student[0];
}
@Override
public void expansion() {
}
}
package com.wz.genericity_02;
public class test01 {
/**
* 知识点:泛型的应用
* 编写通用的管理系统的接口
*/
public static void main(String[] args) {
StudentManagerSystem stu = new StudentManagerSystem();
stu.add(new Student());
}
}
3. 泛型限定
public class B extends A {}
/**
* 泛型限定
*/
public static void main(String[] args) {
}
//? 表示任意类型
public ArrayList<?> method01(){
ArrayList<String> list = new ArrayList<>();
return list;
}
//? extends A 表示A或A的子类
public ArrayList<? extends A> method02(){
//ArrayList<A> list = new ArrayList<>();
ArrayList<B> list = new ArrayList<>();
return list;
}
//? super A 表示A或A的父类
public ArrayList<? super A> method03(){
//ArrayList<A> list = new ArrayList<>();
ArrayList<Object> list = new ArrayList<>();
return list;
}
2. 迭代器
1. foreach的底层实现
foreach的实现
package com.wz.iterator;
import java.util.ArrayList;
public class test02 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
for (String element:list
) {
System.out.println(element);
}
}
}
底层
String next;
for(Iterator<String> iterator = list.iterator();iterator.hasNext;System.out.println(element)){
element=iterator.next();
}
注意加泛型
2. Iterator底层实现
迭代器的实现
package com.wz.iterator;
import com.sun.javafx.binding.StringFormatter;
import java.util.ArrayList;
import java.util.Iterator;
public class test01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
Iterator<String> it = list.iterator();
while(it.hasNext()){
String next = it.next();
System.out.println(next);
}
}
}
底层
存在一个外部操作数modCount,在添加或者删除元素是会++(报错),记录操作的次数,因为在添加或删除过程中会导致元素个数发生改变