原始碼閱讀之Lists

2021-09-03 06:58:11 字數 1485 閱讀 1876

先上個栗子:

listone = lists.newarraylist("1","2","3","4","1","2","3","4");

listonereverse = lists.reverse(one);

onereverse.foreach(log::info);

log.info("----------");

list> onepartition = lists.partition(one,2);

log.info("外層list.size()={} 內層list.size()={}",onepartition.size(),onepartition.get(0).size());

onepartition.stream().foreach(list -> list.stream().foreach(log::info));

onepartition.stream().flatmap(i -> i.stream()).foreach(log::info); //這裡注意兩種寫法的區別

log.info("----------");

integer temp = new integer;

listtwo = lists.aslist(-1,0,temp);

two.foreach(i -> log.info(i.tostring()));

log.info("----------");

listaddtwo = lists.transform(two,i -> i+1);

addtwo.foreach(i -> log.info(i.tostring()));

listthree = lists.newlinkedlist(one);

深入研究了一下public static listreverse(listlist) 

一直在讀reverse()方法的原始碼,研究了半天也沒發現有反轉的方法,怎麼看都是判了一下是否為空就返回了。

自己寫**除錯,發現一開始的reverse()方法就只是乙個判空操作,只有真正用到這個反轉後的字串的時候,才會「反轉」輸出,

而且並不是真的去反轉字串,而是從目標字母串從後向前輸出,依次使用他們的索引。返回的只是乙個list的檢視,高階。

partition() 和 transform()都是這種惰性模式
public static list> partition(listlist, int size)
使用的時候去分割,確定start 和 end 呼叫原生的 list介面的sublist(int fromindex, int toindex)方法

public static listtransform(listfromlist, function<? super f, ? extends t> function)
也是返回list的乙個轉換檢視,所以不能去呼叫 add set 方法。這個方法不好。。坑多不好用,還是stream用著方便。

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...