1. 泛型
- JDK5开始出现了泛型的使用
- 泛型符号 可以应用在 类,接口,方法 的声明处,起到一个占位符的作用,先占个位置 ,给引用类型占个位置;
- 泛型符号 名称和个数无要求 ; T type E element K key V value
- 泛型符号出现在类的声明处和接口的声明处 都可以当成已知类型来进行使用;
- 当泛型符号不指定的时候 统统当成Object类型来用
1.1.泛型类
- 类的声明处有泛型符号
泛型类
//泛型类 占位符
public class CustomGeneric1<A, B, C> {
//当成已知类型来进行使用,凡是需要数据类型的地方 A B C都可以直接用
private A a;
private B b;
private C c;
}
1.2.泛型接口
- 泛型符号应用 接口的声明处
接口的声明
//泛型接口
public interface Inter1<T, E> {
//泛型符号在本接口中 当成已知类型来用
T methodT(T t);
E methodE(E e);
}
实现1
//1, 实现类直接确定接口中的泛型符号的类型
public class Inter1Impl1 implements Inter1<String, Integer> {
}
实现2
//2, 泛型符号如果不指定 统统当成Object来看
public class Inter1Impl2 implements Inter1 {
}
实现3
//3, 实现类继续带上泛型符号
public class Inter1Impl3<T, E> implements Inter1<T, E> {
}
1.3.泛型方法
- 注意点:静态方法中不能出现 泛型类的泛型符号
- 只在方法中应用了泛型符号
注意点:
/**
* 静态方法中不能出现 泛型类的泛型符号
*public static void method2(T t) {
}
1.4.泛型上下限
- ?:通配符 匹配任意类型
- 泛型上限:? extends Animal:可以是Animal类型 或者Animal的子类型
- 泛型的下限:? super Animal:可以是Animal类型 或者Animal的父类型
public class Feeder {
/**
* ?:通配符 匹配任意类型
* ? extends Animal:可以是Animal类型 或者Animal的子类型
* *** 泛型的上限
*/
public void feed(List<? extends Animal> animal) {
}
/**
* ? super Animal:可以是Animal类型 或者Animal的父类型
* ***泛型的下限
*/
public void feed2(List<? super Animal> animal) {
}
}
2. LinkedList 特有的方法
LinkedList<Integer> linkedList = new LinkedList<>();
//获取双向链表中第一个集合元素对象
linkedList.getFirst();
//获取双向链表中最后一个集合元素对象
linkedList.getLast();
//删除双向链表中第一个集合元素对象
linkedList.removeFirst();
//删除双向链表中最后一个集合元素对象
linkedList.removeLast();
3. TreeMap和TreeSet特有的方法
TreeMap<Integer, String> treeMap = new TreeMap<>();
//获取第一个key对象 最小的那个
Integer firstKey = treeMap.firstKey();
// 获取第一个节点对象
Map.Entry<Integer, String> entry = treeMap.firstEntry();
//获取最后一个key对象 最大的那个
Integer lastKey = treeMap.lastKey();
// 获取最后一个节点对象
Map.Entry<Integer, String> lastEntry = treeMap.lastEntry();
4. Collections工具方法
//一次性添加多个对象 到指定的集合中
Collections.addAll(arrayList, "java4", "java1", "java2", "java3");
//倒置 反转
Collections.reverse(List);
//重新洗牌 顺序打乱
Collections.shuffle(arrayList);
5. Stream流的操作
/*中间操作方法:只要方法的返回值类型是Stream类型 都属于中间操作方法
惰性操作方法 只有碰到终止操作方法 它才会执行
filter() 过滤
map() 映射
sorted() 排序
limit() 限制流中的个数
peek() 查看流中数据
终止操作方法:只要方法的返回值类型不是Stream类型 都属于终止操作方法
collect:收集流中的数据
count:统计流中数据的 个数
reduce:对流中的数据进行合并,合并为一个值
Stream对象是一次性 不能重复操作*/
ArrayList<String> arrayList = new ArrayList<>();
//一次性添加多个对象 到指定的集合中
Collections.addAll(arrayList, "java4", "java1", "java2", "java3");
//简化写法
System.out.println(arrayList.stream().filter((s) -> {
return !s.equals("java1");
}).map((s) -> {
return s + "JAVA";
}).limit(3).sorted().peek((s) -> {
//System.out.println(s);
}).count());
标签:Java,Stream,符号,类型,Animal,泛型,public
From: https://www.cnblogs.com/jh0129/p/17224368.html