亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java?Stream流常見操作方法(反射,類加載器,類加載,反射)

 更新時間:2022年06月30日 09:25:11   作者:??pofenx????  
這篇文章主要介紹了java?Stream流常見操作方法(反射,類加載器,類加載,反射),文章圍繞主題展開詳細的內(nèi)容介紹,展開詳細的內(nèi)容介紹,具有一定參考價值,感興趣的小伙伴可以參考一下

Stream流常見的中間操作方法

  • Streamfilter(Predicate predicate):用于對流中的數(shù)據(jù)進行過濾

predicate接口中的方法 boolean test(T t):對給定的參數(shù)進行判斷,返回一個布爾值

  • Stream limit(long maxSize):返回此流中元素組成的流,截取前指定參數(shù)個數(shù)的數(shù)據(jù)
  • Stream skip(long n) :跳過指定參數(shù)個數(shù)據(jù),返回有該流的剩余元素組成的流
  • staticStreamconcat(Stream a ,Stream b):合并a和b兩個流為一個流
  • Streamdiatinct():返回有該留的不同元素(根據(jù)Objectequals(Object) 組成的流
  • Stream sorted():返回有潮流的元素組成的流,根據(jù)自然順序排序
  • Stream sorted(Comparator comparator):返回由該流元素組成的流,根據(jù)提供的Compatator進行排序
  • Streammap(Function mapper):返回由給定函數(shù)應(yīng)用于此流的元素結(jié)果組成的流

function 接口中的方法 R applu(T t)

  • intStream mapToint(TointFunction mapper):返回一個intStream其中包含將給定函數(shù)應(yīng)用于此流的元素的結(jié)果
  • intStream: 表示原始int流
  • ToIntFunction接口中的方法
  • int applyAsInt(T value)
package Demo1;
import java.util.ArrayList;
public class Demo32 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("林青霞");
        list.add("張曼玉");
        list.add("王祖賢");
        list.add("柳巖");
        list.add("張敏");
        list.add("張無忌");
        //以張開頭
        list.stream().filter(s -> s.startsWith("張")).forEach(System.out::println);
        System.out.println("-------------");
        //長度為3
        list.stream().filter(s -> s.length()==3).forEach(System.out::println);
        System.out.println("---------------");
        //張,長度為3
        list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length()==3).forEach(System.out::println);

    }
}
package Demo1;
import java.util.ArrayList;
public class Demo33 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("林青霞");
        list.add("張曼玉");
        list.add("王祖賢");
        list.add("柳巖");
        list.add("張敏");
        list.add("張無忌");
        //需求一,取前三個數(shù)據(jù)在控制臺輸出
        list.stream().limit(3).forEach(System.out::println);
        //跳過前三個元素
        list.stream().skip(3).forEach(System.out::println);
        //跳過前2個元素,把剩下元素中國前兩個在控制臺上輸出
        list.stream().skip(2).limit(2).forEach(System.out::println);
        }
    }
package Demo1;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo34 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("林青霞");
        list.add("張曼玉");
        list.add("王祖賢");
        list.add("柳巖");
        list.add("張敏");
        list.add("張無忌");
        //需求1,取前4給數(shù)據(jù)組成一個流
        Stream<String> s1 = list.stream().limit(4);
        //跳過前兩個數(shù)據(jù)組成一個流
        Stream<String> s2 = list.stream().skip(2);
        //需求3,合并1,2得到的流,結(jié)果輸出在控制臺
 Stream.concat(s1,s2).forEach(System.out::println);
        //4,合并1,2流,輸出在控制臺,字符串元素不能重復(fù)
        Stream.concat(s1,s2).distinct().forEach(System.out::println);
        }
}
package Demo1;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo34 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("lingqinxia");
        list.add("zhangmanyu");
        list.add("wangzhuxian");
        list.add("liuyan");
        list.add("zhangming");
        list.add("zhangwuji");
 //按照字母順序輸出
      //  list.stream().sorted().forEach(System.out::println);
        //按照長度排列輸出
        //list.stream().sorted((s1,s2) -> s1.length() - s2.length()).forEach(System.out::println);
list.stream().sorted((s1,s2) ->{
    int num = s1.length()-s2.length();
    int num2 = num ==0?s1.compareTo(s2):num;
    return num2;
}).forEach(System.out::println);
    }
}
package Demo1;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo34 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("30");
        list.add("40");
        list.add("50");
        list.add("7");
        list.add("87");
        list.add("756");
//將集合中的制度串?dāng)?shù)據(jù)轉(zhuǎn)換為整數(shù)輸出
//list.stream().map(Integer::parseInt).forEach(System.out::println);
      //  list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);
//int sum 返回流中的總和
        int result = list.stream().mapToInt(Integer::parseInt).sum();
        System.out.println(result);
    }
}

Stream流中常見的終結(jié)操作方法

  • void forEach(Consumer action):對此流的每個元素操作

Consumer接口中的方法

void accept(T t ):對給定的參數(shù)執(zhí)行此操作

  • long count():返回此流中的元素數(shù)
package Demo1;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo34 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("林青霞");
        list.add("張曼玉");
        list.add("王祖賢");
        list.add("柳巖");
        list.add("張敏");
        list.add("張無忌");
//list.stream().forEach(System.out::println);
       long count = list.stream().filter(s -> s.startsWith("張")).count();
        System.out.println(count);
    }
}

反射

類加載器

類加載:

  • 當(dāng)程序要使用某個類時,如果該類還未被加載到內(nèi)存中,則系統(tǒng)會通過類的加載,類的連接,類的初始化三個步驟對類進行初始化,JVM將會連續(xù)完成這三個步驟,所有有時也罷這三個步驟統(tǒng)稱為類加載或者類初始化

類的加載:

  • 就是指將class文件讀入內(nèi)存。并為之創(chuàng)建一個java.lang.class對象
  • 任何類被使用時。系統(tǒng)都會為之建立一個java.lang.class對象

類的連接:

  • 驗證階段:用于檢驗被加載的類時候具有正確的內(nèi)部結(jié)構(gòu),并和其他類協(xié)調(diào)一致
  • 準備階段:負責(zé)為類的類變量分配內(nèi)存,并設(shè)置默認初始化值
  • 解析階段:將類的二進制數(shù)據(jù)中的符號引用替換為直接引用

類的初始化:

  • 在該階段,主要就是對類變量進行初始化

類的初始化步驟:

  • 假如類還未被類加載器和連接,則程序先加載并連接該類
  • 加入該類的直接父類還未被初始化,則先初始化其直接父類
  • 加入類中有初始化語句,則系統(tǒng)會依次執(zhí)行這些初始化語句

注意:在執(zhí)行第二個步驟的時候,系統(tǒng)對字節(jié)父類的初始化步驟也遵循初始化步驟1-3

類的初始化時機:

  • 創(chuàng)建類的實例
  • 調(diào)用類的類方法
  • 訪問類或者接口類變量,或者為該類變量賦值
  • 使用反射方式來強制創(chuàng)建某個類或者接口對應(yīng)的java.lang.class對象
  • 初始化某個類的子類
  • 直接使用java.exe命令來運行某個主類

反射概述

java反射機制:是指在運行時去獲取一個類的變量和方法的信息,然后通過獲取到的信息來創(chuàng)建對象,調(diào)用方法的一種機制。由于這種動態(tài)性,可以極大的增強程序的靈活性,程序不用在編譯期就完成確定,在運行時仍然可以擴展

  • 獲取class類的對象
  • 使用class屬性來獲取對應(yīng)的class對象,舉例:student.class將會返回student類對應(yīng)的class對象
  • 調(diào)用對象的getclass()方法,返回該對象所屬類對應(yīng)的class對象,該方法是object類中的方法,所有的java對象都可以調(diào)用該方法
  • 使用class類中的靜態(tài)方法forName(String className),該方法需要傳入字符串參數(shù),該字符串參數(shù)的值是某個類的全路徑,也就是完整的包名路徑

到此這篇關(guān)于java Stream流常見操作方法(反射,類加載器,類加載,反射)的文章就介紹到這了,更多相關(guān)Stream流操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用Arrays.asList報UnsupportedOperationException的解決

    Java使用Arrays.asList報UnsupportedOperationException的解決

    這篇文章主要介紹了Java使用Arrays.asList報UnsupportedOperationException的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java實現(xiàn)動態(tài)創(chuàng)建類操作示例

    Java實現(xiàn)動態(tài)創(chuàng)建類操作示例

    這篇文章主要介紹了Java實現(xiàn)動態(tài)創(chuàng)建類操作,結(jié)合完整示例形式分析了Java動態(tài)創(chuàng)建類的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • 如何解決Idea斷點調(diào)試亂跳的問題

    如何解決Idea斷點調(diào)試亂跳的問題

    這篇文章主要介紹了如何解決Idea斷點調(diào)試亂跳的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • review引發(fā)的有關(guān)于單例模式的思考

    review引發(fā)的有關(guān)于單例模式的思考

    一次代碼調(diào)試中發(fā)現(xiàn)一個情況,即我在查看memcached的connection時,發(fā)現(xiàn)總是維持在100來個左右,當(dāng)然這看似沒什么問題,因為memcached默認connection有1024個。
    2013-04-04
  • intellij idea 啟動tomcat 1099端口被占用的解決

    intellij idea 啟動tomcat 1099端口被占用的解決

    這篇文章主要介紹了intellij idea 啟動tomcat 1099端口被占用的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java中如何獲取圖片文件格式(后綴)

    Java中如何獲取圖片文件格式(后綴)

    這篇文章主要介紹了Java中如何獲取圖片文件格式(后綴),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java中isEmpty和isBlank的區(qū)別小結(jié)

    java中isEmpty和isBlank的區(qū)別小結(jié)

    Java中的isEmpty和isBlank都是用來判斷字符串是否為空的方法,但在不同的情況下有所區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • SpringBoot集成支付寶沙箱支付的實現(xiàn)示例

    SpringBoot集成支付寶沙箱支付的實現(xiàn)示例

    本文主要介紹了SpringBoot集成支付寶沙箱支付的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 詳解spring開發(fā)_JDBC操作MySQL數(shù)據(jù)庫

    詳解spring開發(fā)_JDBC操作MySQL數(shù)據(jù)庫

    本篇文章主要介紹了spring開發(fā)_JDBC操作MySQL數(shù)據(jù)庫,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • SpringSecurity6自定義JSON登錄的實現(xiàn)

    SpringSecurity6自定義JSON登錄的實現(xiàn)

    目前最新版的Spring Boot已經(jīng)到了3.0.5了,隨之而來Spring Security 目前的版本也到了6.0.2了,Spring Security寫法的變化特別多,本文就來介紹下,感興趣的可以了解一下
    2023-12-12

最新評論