您正在查看:饭饭 发布的文章

Java中的函数式接口、Stream流

今日总结

  • 函数式接口
  • Stream流

1 函数式接口

  • 概念

    有且仅有一个抽象方法的接口

  • 如何检测一个接口是不是函数式接口

    @FunctionalInterface

    放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败

  • 注意事项

    我们自己定义函数式接口的时候,@FunctionalInterface是可选的,就算我不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。但是,建议加上该注解

1.1 常用函数式接口之Supplier

  • Supplier接口

    Supplier接口也被称为生产型接口,如果我们指定了接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据供我们使用。

  • 常用方法

    只有一个无参的方法

    方法名说明
    T get()按照某种实现逻辑(由Lambda表达式实现)返回一个数据
  • 代码演示

    public class SupplierDemo {
        public static void main(String[] args) {
    
            String s = getString(() -> "林青霞");
            System.out.println(s);
            
            Integer i = getInteger(() -> 30);
            System.out.println(i);
        }
    
        //定义一个方法,返回一个整数数据
        private static Integer getInteger(Supplier<Integer> sup) {
            return sup.get();
        }
    
        //定义一个方法,返回一个字符串数据
        private static String getString(Supplier<String> sup) {
            return sup.get();
        }
    
    }

- 阅读剩余部分 -

函数编程、Lambda表达式、接口更新、方法引用

今日总结

  • 函数编程
  • Lambda表达式
  • 接口更新
  • 方法引用

1 函数编程

  • 函数式编程思想概述

    函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”

    Lambda表达式就是函数式思想的体现

2 Lambda表达式

  • 用于简化匿名内部类
  • 也可以把Lambda表达式看成是接口的实现类对象

2.1 Lambda表达式的标准格式

  • 标准格式:

    ​ (形式参数) -> {代码块}

    • 形式参数:接口中抽象方法的参数列表,如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
    • ->:由英文中画线和大于符号组成,固定写法。代表指向动作,表示参数传递
  • 代码块:是我们具体要做的事情,也就是以前我们写的方法体内容,实现了抽象方法之后的方法体
  • 组成Lambda表达式的三要素:

    • 形式参数,箭头,代码块
  • Lambda表达式的使用前提

    • 一个接口中有且只有一个抽象方法,这种接口称之为函数式接口,可以通过一个注解来验证:@FunctionalInterface
  • 接口中有且仅有一个抽象方法

- 阅读剩余部分 -

Java中的网络编程

今日总结

  • 网络编程

    • 网络编程的三要素
    • UDP编程
    • TCP编程

1 网络编程(Socket)

  • 编写的程序可以在实现了网络互联的不同地理位置的计算机之间进行数据的交换。

1.1 网络编程概述

  • 计算机网络

    是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统

  • 网络编程

    在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换

- 阅读剩余部分 -

多线程和线程同步

今日总结

  • 实现多线程
  • 线程同步
  • 生产者与消费者案例

1 实现多线程

1.1 进程和线程

  • 进程:是正在运行的程序

    ​ 是系统进行资源分配和调用的独立单位

    ​ 每一个进程都有它自己的内存空间和系统资源

  • 线程:是进程中的单个顺序控制流,是进程中的一条执行路径

    ​ 单线程:一个进程如果只有一条执行路径,则称为单线程程序

    ​ 多线程:一个进程如果有多条执行路径,则称为多线程程序

  • 如果一个进程一个线程都没有,则该进程也会随之结束

1.2 实现多线程的两种方式

- 阅读剩余部分 -

Java中的其他流、Properties集合

今日总结

  • 其他流

    • 标准输入输出流
    • 打印流
    • 对象序列化流
  • Properties集合

1 IO特殊操作流

1.1 标准输入输出流

  • System类中有两个静态的成员变量

    • public static final InputStream in:标准输入流。通常该流对应于键盘输入或由主机环境或用户指定的另一个输入源,默认指向的是键盘,从键盘读取数据,可以改变其指向
    • public static final PrintStream out:标准输出流。通常该流对应于显示输出或由主机环境或用户指定的另一个输出目标,默认指向的是控制台,将数据输出到控制台,可以改变其指向
  • 输出语句的本质:是一个标准的输出流

    • PrintStream ps = System.out;
    • PrintStream类有的方法,System.out都可以使用

- 阅读剩余部分 -

Java中的字节缓冲流、字符流

今日总结

  • 字节流
  • OutputStream 字节输出流 超类

    • FileOutputStream 基本流
    • FilterOutputStream

      • BufferedOutputStream 字节缓冲输出流(高效)
  • InputStream 字节输入流 超类

    • FileInputStream 基本流
    • FilterInputStream

      • BufferedInputStream 字节缓冲输入流(高效)
  • 字符流
  • Writer 字符输出流 超类

    • OutputStreamWriter 转换流

      • FileWriter 基本流
    • BufferedWriter 字符输出缓冲流(高效)
  • Reader 字符输入流 超类

    • InputStreamReader 转换流,字节输入流+指定编码表

      • FileReader 基本流,字节输入流+默认编码表
    • BufferedReader 字符输入缓冲流(高效)

- 阅读剩余部分 -

Java中的File类、递归、IO字节流

今日总结

  • File类
  • 递归
  • 字节流

1 File类

1.1 File类概述和构造方法

  • File类介绍

    • 它是文件和目录路径名的抽象表示
    • 文件和目录是可以通过File封装成对象的
    • 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
  • File类的构造方法

    方法名说明
    File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
    File(String parent, String child)从父路径名字符串和子路径名字符串创建新的 File实例
    File(File parent, String child)从父抽象路径名和子路径名字符串创建新的 File实例
    • 反斜杠 \ 在字符串中有特殊含义,它是一个转义字符,用于转变原字符的意思。
    • 在路径中使用到的 \ 不是希望它起转义作用,而是起分割作用。

- 阅读剩余部分 -

Java中的Map集合、Collections集合工具类

今日总结

1 Map

​ Map 的体系结构和 Set 体系结构非常相似,Set 体系底层基本上使用都是 Map 体系

  • Set

    • HashSet

      • LinkedHashSet
    • TreeSet
  • Map

    • HashMap

      • LinkedHashMap
    • TreeMap

    对于Map来说,每种集合底层也使用了数据结构,但是其数据结构只针对键有效,对值无效

1.1 Map集合概述和特点

  • Map集合概述

    interface Map<K,V>  K:键的类型;V:值的类型
  • Map集合的特点

    • 键值对映射关系,键和值是一一对应的,一个键只能对应唯一的一个值
    • Map是一个双列集合,第一列是键,第二列值值,一个键对应一个值
    • 键不能重复,如果键重复,则值覆盖,只会保留一个相同的键,值可以重复
    • 元素存取无序

1.2 Map集合的常用方法

  • 常用方法

    方法名说明
    V put(K key,V value)添加元素
    V remove(Object key)根据键删除键值对元素
    void clear()移除所有的键值对元素
    boolean containsKey(Object key)判断集合是否包含指定的键
    boolean containsValue(Object value)判断集合是否包含指定的值
    boolean isEmpty()判断集合是否为空
    int size()集合的长度,也就是集合中键值对的个

1.3 Map集合的获取功能

  • 常用方法

    方法名说明
    V get(Object key)根据键获取值
    Set keySet()获取所有键的集合
    Collection values()获取所有值的集合
    Set<Map.Entry<K,V>> entrySet()获取所有键值对对象的集合

1.4 Map集合的遍历(方式1)

  • 遍历思路
  • 1.通过keySet()方法获取所有键的集合

    • 2.遍历集合,获取每一个键,可用增强for实现
    • 3.通过get(K k)根据键找对应的值

1.5 Map集合的遍历(方式2)

  • 遍历思路

    • 1.通过entrySet()方法获取所有的键值对对象(Entry)的集合

      • Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
    • 2.遍历键值对对象的集合,得到每一个键值对对象

      • 用增强for实现,得到每一个Map.Entry
    • 3.根据键值对对象的getKey()和getValue分别获取键和值

      • 用getKey()得到键
      • 用getValue()得到值

2 Collections集合工具类

2.1 Collections概述和使用

  • Collections类的作用

    ​ 是针对集合操作的工具类

  • Collections类常用方法

    方法名说明
    public static void sort(List list)将指定的列表按升序排序
    public static void reverse(List<?> list)反转指定列表中元素的顺序
    public static void shuffle(List<?> list)使用默认的随机源随机排列指定的列表
  • Collection 和 Collections 的区别

    • Collection 是单列集合的顶层接口
    • Collections 是集合的工具类,里面提供了很多方便对集合进行操作的方法

Java中的Set集合,泛型,可变参数

今日总结

  • Set集合

    • HashSet

      • LinkedHashSet
    • TreeSet
  • 泛型
  • 可变参数

1 Set集合

1.1 体系

Collection

  • List

    • ArrayList
    • LinkedList
  • Set:存取无序,没有索引,不能存储重复元素

    • HashSet

      • LinkedHashSet
    • TreeSet

Set接口中没有特有方法,其中和Collection完全相同

1.2 哈希值

  • 哈希值

    ​ 是 JDK 根据对象的地址或者字符串或者数字算出来的 int 类型的数值

  • 如何获取哈希值

    ​ Object 类中的 public int hashCode():返回对象的哈希码值

  • 哈希值的特点

    • 同一个对象多次调用 hashCode() 方法返回的哈希值是相同的
    • 默认情况下,不同对象的哈希值是不同的。而重写 hashCode() 方法,可以实现让不同对象的哈希值相同。

1.3 HashSet集合

  • HashSet 集合的特点

    • 底层数据结构是哈希表
    • 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
    • 没有带索引的方法,所以不能使用普通 for 循环遍历
    • 由于是 Set 集合,所以是不包含重复元素的集合

- 阅读剩余部分 -

Java中的集合

1.Collection集合

1.1 集合体系结构

  • 集合类的特点

    ​ 提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变

  • 集合类的体系图

    01.png

1.2 Collection集合概述和基本使用

  • Collection 集合概述

    • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
    • JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
  • Collection 集合基本使用

    public class CollectionDemo01 {
        public static void main(String[] args) {
            //创建Collection集合的对象
            Collection<String> c = new ArrayList<String>();
    
            //添加元素:boolean add(E e)
            c.add("hello");
            c.add("world");
            c.add("java");
    
            //输出集合对象
            System.out.println(c);
        }
    }

- 阅读剩余部分 -

  1. 1
  2. ...
  3. 5
  4. 6
  5. 7
  6. 8
  7. 9
  8. 10
  9. 11
  10. ...
  11. 19