java stream collect(Supplier,BiConsumer,BiConsumer)
<R> R collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)参数一:supplier 接口的get方法,提供一个容器(List,Map,Set),作为accumulator和combiner的参数,并且是最后的返回值(同被R泛型约束)参数二:accumulator接
java util.function.Supplier
Interface Supplier<T>T:Supplier提供的返回结果//要实现的接口方法T get()Gets a result.Returns:a result参考:https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html
java util.function.BiConsumer
消费两个参数Interface BiConsumer<T,U>T - 第一个输入的参数类型U - 第二个输入参数的类型void accept(T t,U u)Parameters:t - the first input argumentu - the second input argument
java 泛型 泛型类(Generic Classes)类型形参(Type Parameters)
类(class)的类型形参的作用范围是整个class,除了静态(static)成员和静态初始化模块.class Test <T> { static { Test<T> test = new Test<T>(); // error static initializer } private static T field; // error static field public static T method
java 泛型 泛型接口(Generic Interfaces)类型形参(Type Parameters)
接口的类型形参作用于整个接口,除了一些字段和嵌套类型,因为字段和嵌套类型都是默认静态interface Interface <T> { T value; //error T method(); // methods}
java 泛型 泛型接口(Generic Methods)类型形参(Type Parameters)
方法或构造器的类型形参作用于整个方法,没有例外.因为方法没有静态部分//1.静态方法static <T extends String> void staticMethod( T t) {}//2.非静态方法<T extends String> void staticMethod( T t) {}参考:http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ301..
java 泛型 类型形参(Type Parameters)
类型形参(type parameters) 给类型实参(type argrments)站位public interface List<E>{ boolean add(E e);}List<String> list = new LinkedList<>();list.add("123")在Java List接口源码中使用<E>来定义类型形参,当我们调用接口方法时,则是使用String这个类型实参来替换参考:http://www.ange
java 泛型 类型形参(Type Parameters)Type Parameters 边界(Bound)
声明类型形参<T>后,这时编译器并不知道T是什么类型,假设我们需要调用某些类的方法时,编译器会报错.class Test<T>{ void fn(T t){ System.out.println(t.charAt(0 )); //假设我们指定T是String或String的子类,我们想调用其charAt方法,这时编译器会报错 }}这时我们就需要给T一个上届<T extends String>,表示T是String或String的子类
java 泛型 类型形参(Type Parameters)Type Parameters 边界(Bound) 类型
Bound类型除了基础类型(primitive)和数组(Array)外,都可以作为边界类型<T extends Number ><T extends String ><T extends Runnable > <T extends Thread.State ><T extends List ><T extends List<String> >这两个不行<T extends int ><
java 多态 优势
1.因为多态,不需要为每一个类型定义方法package com;class Animal { public void eat(){ System.out.println("Animal eat"); };}class Cat extends Animal { public void eat() { System.out.println("Cat eat"); }}class Dog extends Animal { pu
java 多态 转型
向上转型反正就是可以用Fu类型引用Zi类型1.定义的时候Fu fu = new Zi2.集合使用泛型的时候List<String> list = new ArrayList();list.add("123");//String 被转换为Object3.传参的时候Zi zi = new Zi(); //创建一个子类void fn(Fu fu){}; //定义一个父类型参数的方法fn(zi);//传入zi向下转型多态可以让我们方便使用同名的子类方法,但是却不能使用子类独有
java 泛型 `<E extends Enum<E>>`
public abstract class Enum<E extends Enum<E>>{ public final int compareTo( E o) { ... }}Enum的源码中<E extends Enum<E>>这种格式的泛型是指:该类只能被子类实例化,子类会继承其方法.就是类型E是Enum的子类.而该类的compareTo方法参数就是类型E,既子类.package com;enum DAY { MON, TUE, WED,
java中一些常用的小方法集合
java中一些常用的小方法集合1、格式化小数(保留几位小数)// 保留两位小数DecimalFormat decimalFormat = new DecimalFormat("#0.00");String str = decimalFormat.format(number);//显示白分比DecimalFormat decimalFormat1 = new DecimalFormat("#0.00%");String str = decimalFormat1.format(number);
四种方法实现两个整数变量之间的互换
四种方法实现两个整数变量之间的互换方法一(使用第三方变量(开发中用的))class Test { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b); //方式1:使用第三方变量(开发中用的) int c = a; a = b;
GUI编程核心技术之AWT介绍
GUI编程学习第一天组件窗口弹窗面板文本框列表框按钮图片监听事件鼠标键盘事件外挂破解工具简介GUI核心技术:Swing,AWT(不流行)界面不美观。需要jre环境。学习GUI得主要目的是了解MVC架构,了解监听。AWTAWT介绍是一个new类,包含了很多类和接口,用于GUI编程,图形用户界面编程。元素:窗口、按钮、文本框、java.awt组件和容器Framepublic class TestFrame { public static
自步学习(self-paced learning)详解
自步学习总结及Python代码实现1.定义自步学习(SPL)是近期提出的一种学习机制,受到人类和动物学习过程的启发,该过程逐渐将复杂的样本纳入训练中,即在训练模型的整个过程中,我们先让模型学习简单的样本,慢慢的再加入复杂的样本让模型进行学习。目前的除了普通的自步学习外,加有多样性(diversity)的自步学习也被提出。2.不带有多样性的自步学习(SPL)2.1 简介SPL就是一般的自步学习,即模型的训练过程中,先从简单样本开始学起,直至复杂样本。该算法的数学描述如下:假设样本集合X=[x1,
GUI学习之Swing
GUI编程之Swing1.窗口、面板(JFrame)package day03;import javax.swing.*;import java.awt.*;public class JFrameTest { public static void main(String[] args) { //创建一个jFrame JFrame jFrame_test = new JFrame("JFrame test"); //设置窗口大小
数据结构与算法总结1
1 常用数据结构1.1 常用数据结构和技巧数组、字符串链表栈队列双端队列树(1)数组、字符床优缺点优点:构建一个数组非常简单;能让我们再O(1)的时间里根据数组的下标查询某个元素缺点:构建时必须分配一段连续的空间;查询某个元素是否存在时需要遍历整个数组,耗费O(n)的时间;删除和添加某个元素时,同样需要耗费O(n)的时间(2)链表单链表:链表中的每个元素实际上是一个单独的对象,而所有的对象都通过每个元素中的引用字段链接在一起双链表:与单链表不同的是,双链表的每个结点中都含有两
今日推荐
周排行