OOP23-Java函数式编程

各种方式访问java的列表List的每个元素

各种方式访问java的列表List的每个元素.LinkedList是链式的列表(链表).
不建议使用内部类的方式, 建议使用lambda表达式.
无论如何, 基本的for循环功能是最强大的.

import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;

public class ListDemo {
    public static void main(String[] args) {
        List nameList = new LinkedList<>();
        nameList.add("zhangsan");
        nameList.add("lisi");
        nameList.add("wanger");
        //基本的for循环, 依次访问nameList中每个元素
        for (int i = 0; i < nameList.size(); i++) {
            System.out.println(nameList.get(i));
        }
        System.out.println("--------------------------------");
        //增强型的for循环, 顺序看不见, 但还在
        for (String name : nameList) {
            System.out.println(name);
        }
        System.out.println("--------------------------------");
        //使用内部类, 以后的函数式编程是内部类的简写方式
        nameList.stream().forEach(new Consumer() {
            @Override
            public void accept(String name) {
                System.out.println(name);
            }
        });
        System.out.println("--------------------------------");
        //使用函数式编程,省略参数类型的lambda表达式
        nameList.stream().forEach(name->System.out.println(name));
        System.out.println("--------------------------------");
        //使用参数类型
        nameList.stream().forEach((String name)->System.out.println(name));
        System.out.println("--------------------------------");
        //使用块作为lambda主体
        nameList.stream().forEach(name->{
            System.out.println(name);
        });
        System.out.println("--------------------------------");
        //使用成员引用
        nameList.stream().forEach(System.out::println);
        System.out.println("--------------------------------");
        //并行处理parallelStream, forEach不保证顺序的访问每个元素
        //forEach可以写的lambda表达式与stream的forEach相同
        nameList.parallelStream().forEach(name->System.out.println(name));
        System.out.println("--------------------------------");
        //forEachOrdered按照序号处理
        nameList.parallelStream().forEachOrdered(name->System.out.println(name));
    }
}

运行结果:

zhangsan
lisi
wanger
--------------------------------
zhangsan
lisi
wanger
--------------------------------
zhangsan
lisi
wanger
--------------------------------
zhangsan
lisi
wanger
--------------------------------
zhangsan
lisi
wanger
--------------------------------
zhangsan
lisi
wanger
--------------------------------
zhangsan
lisi
wanger
--------------------------------
zhangsan
wanger
lisi
--------------------------------
zhangsan
lisi
wanger

最后第二块的输出顺序不一定.

Java队列(Queue)操作示例

队列(Queue)先进先出. LinkedList也是队列(Queue)
Java队列(Queue)操作示例

public class QueueDemo {
    public static void main(String[] args) {
        Queue dataQueue = new LinkedList<>();
        dataQueue.offer("zhangsan");
        dataQueue.offer("lisi");
        dataQueue.offer("wanger");
        String data = dataQueue.poll();
        System.out.println("Data is polled out of dataQueue: " + data);
        System.out.println("Data in dataQueue:");
        for (String name : dataQueue) {
            System.out.println(name);
        }
    }
}

运行结果:

Data is polled out of dataQueue: zhangsan
Data in dataQueue:
lisi
wanger

你可能感兴趣的:(OOP)