首页 > 编程语言 >Java 集合(泛型 Stream)

Java 集合(泛型 Stream)

时间:2023-03-16 22:11:59浏览次数:40  
标签:Java Stream 符号 类型 Animal 泛型 public

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

相关文章

  • Java序列化与反序列化三连问:是什么?为什么要?如何做?
    Java序列化与反序列化是什么?Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程。为什么需要序列化与反序列化?对象序列......
  • 不可变集合和Stream流
    不可变集合1.不可变集合的特点定义完成后不可以添加,删除和修改2.不可变集合的优点更安全,更效率3.如何创建可以用List,Set,Map接口种,都存在的of方法创建不可变集合......
  • 【Java】1‘
    基本语法一些方法获取用户的输入ScannerScannersc=newScanner(System.in);System.out.println("请输入您的体重的公斤数,如60:");tizhong=sc.nextDouble();格式......
  • iostream,iostream.h,stdio.h的纠葛
    include<iostream.h>非标准输入输出流include标准输入输出流C++中为了避免名字定义冲突,特别引入了“名字空间的定义”,即namespace。当代码中用<iostream.h>时,输出可直......
  • 16.(行为型模式)java设计模式之责任链模式
    一、什么是责任链模式模式(ChainofResponsibility)客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。让多个对象都有机会处......
  • java的多态
    概念、同一个事物,在不同的情况下,表现出来的状态不一样语法父类申明指向子类对象注意父类和子类之间必须存在着继承关系,不一定是直接的继承关系,父类可以是爸爸,也可以......
  • java中的继承
    概念程序中的继承要满足一个前提:isa父类是具有共性的,子类是具有特性的java是单根继承(即一个子类,只能有一个直接父类)好处在子类中在可以获取弗雷哪里可以继承的的方......
  • Java中的NIO
    最近在研究Java中的IO,感觉这一块很重要,只要涉及到数据传输,不论是本地文件传输,还是远程的网络传输,基本离不开IO。上一篇文章已经大致的总结了一下Java1.1的传统IO(Java中的I......
  • javascript addEventListener
    addEventListenerEventTarget.addEventListener()方法将指定的监听器注册到EventTarget上,当该对象触发指定的事件时,指定的回调函数就会被执行。1.1EventTarget可以......
  • JavaScript基础
    JS是什么是运行在浏览器的编程语言,由ECMAscript(基础语法)+DOM+BOM组成。导入方式导入方式有三种,内部导入、外部导入、行内导入注意:script便签加在/body前为妙......