当前位置:   article > 正文

十种高级的代码书写方式,提高代码质量和工作效率_代码写法技术高级

代码写法技术高级

1.集合遍历

不使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. for (String name : list) {
  3. System.out.println(name);
  4. }

使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. list.forEach(name -> System.out.println(name));

2.排序

升序

不使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. Collections.sort(list, new Comparator<String>() {
  3. public int compare(String s1, String s2) {
  4. return s1.compareTo(s2);
  5. }
  6. });

使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. Collections.sort(list, (s1, s2) -> s1.compareTo(s2));

3.过滤

不使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. List<String> filteredList = new ArrayList<String>();
  3. for (String name : list) {
  4. if (name.startsWith("a")) {
  5. filteredList.add(name);
  6. }
  7. }

使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. List<String> filteredList = list.stream().filter(name -> name.startsWith("a")).collect(Collectors.toList());

4.映射

映射即按照当前list顺序,根据新的规则新建一个list然后存储对应的对象

不使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. List<Integer> lengths = new ArrayList<Integer>();
  3. for (String name : list) {
  4. lengths.add(name.length());
  5. }

使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. List<Integer> lengths = list.stream().map(name -> name.length())
  3. .collect(Collectors.toList());

5.规约(求和)

不使用lambda:

  1. List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
  2. int sum = 0;
  3. for (int i : list) {
  4. sum += i;
  5. }

使用lambda:

  1. List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
  2. int sum = list.stream().reduce(0, (a, b) -> a + b);

注意: reduce(T identity, BinaryOperator<T> accumulator方法第一个参数传入的是这个求和方法的起始值,如reduce(0, (a, b) -> a + b)输出15,reduce(3, (a, b) -> a + b)输出18

6.分组

字符串长度相同的放在同一个链表里

不使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. Map<Integer, List<String>> grouped = new HashMap<Integer, List<String>>();
  3. for (String name : list) {
  4. int length = fruit.length();
  5. if (!grouped.containsKey(length)) {
  6. grouped.put(length, new ArrayList<String>());
  7. }
  8. grouped.get(length).add(name);
  9. }

使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. Map<Integer, List<String>> grouped = list.stream().collect(Collectors.groupingBy(name -> name.length()));

7.实现函数式接口

不使用lambda:

  1. public interface MyInterface {
  2. public void doSomething(String input);
  3. }
  4. MyInterface myObject = new MyInterface() {
  5. public void doSomething(String input) {
  6. System.out.println(input);
  7. }
  8. };
  9. myObject.doSomething("Hello World");

使用lambda:

  1. MyInterface myObject = input -> System.out.println(input);
  2. myObject.doSomething("Hello World");

8.进行Optional操作

Optional类是用来解决空指针异常的。

  • Optional.ofNullable(T t):t可以为null
  • Optional.map(Function<? super T,? extends U> mapper):如果有值,则对其执行调用映射函数得到返回值。如果返回值不为 null,则创建包含映射返回值的Optional作为map方法返回值,否则返回空Optional。

不使用lambda:

  1. String str = "Hello World";
  2. if (str != null) {
  3. System.out.println(str.toUpperCase());
  4. }

使用lambda:

  1. Optional<String> str = Optional.ofNullable("Hello World");
  2. str.map(String::toUpperCase).ifPresent(System.out::println);

9.流水线操作

不使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. List<String> filteredList = new ArrayList<String>();
  3. for (String name : list) {
  4. if (name.startsWith("a")) {
  5. filteredList.add(name.toUpperCase());
  6. }
  7. }
  8. Collections.sort(filteredList);

使用lambda:

  1. List<String> list = Arrays.asList("kk", "oneone", "11");
  2. List<String> filteredList = list.stream().filter(fruit -> fruit.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());

10.线程创建

不使用lambda:

  1. Thread thread = new Thread(new Runnable() {
  2. public void run() {
  3. System.out.println("Thread is running.");
  4. }
  5. });
  6. thread.start();

使用lambda:

  1. Thread thread = new Thread(() -> System.out.println("Thread is running."));
  2. thread.start();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/198840
推荐阅读
相关标签
  

闽ICP备14008679号