欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Stream流常見的中間操作方法

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

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

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

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

  • intStream mapToint(TointFunction mapper):返回一個(gè)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("張無忌");
        //需求一,取前三個(gè)數(shù)據(jù)在控制臺(tái)輸出
        list.stream().limit(3).forEach(System.out::println);
        //跳過前三個(gè)元素
        list.stream().skip(3).forEach(System.out::println);
        //跳過前2個(gè)元素,把剩下元素中國前兩個(gè)在控制臺(tái)上輸出
        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ù)組成一個(gè)流
        Stream<String> s1 = list.stream().limit(4);
        //跳過前兩個(gè)數(shù)據(jù)組成一個(gè)流
        Stream<String> s2 = list.stream().skip(2);
        //需求3,合并1,2得到的流,結(jié)果輸出在控制臺(tái)
 Stream.concat(s1,s2).forEach(System.out::println);
        //4,合并1,2流,輸出在控制臺(tái),字符串元素不能重復(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):對(duì)此流的每個(gè)元素操作

Consumer接口中的方法

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

  • long count():返回此流中的元素?cái)?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)程序要使用某個(gè)類時(shí),如果該類還未被加載到內(nèi)存中,則系統(tǒng)會(huì)通過類的加載,類的連接,類的初始化三個(gè)步驟對(duì)類進(jìn)行初始化,JVM將會(huì)連續(xù)完成這三個(gè)步驟,所有有時(shí)也罷這三個(gè)步驟統(tǒng)稱為類加載或者類初始化

類的加載:

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

類的連接:

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

類的初始化:

  • 在該階段,主要就是對(duì)類變量進(jìn)行初始化

類的初始化步驟:

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

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

類的初始化時(shí)機(jī):

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

反射概述

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

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

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

相關(guān)文章

  • Java使用Arrays.asList報(bào)UnsupportedOperationException的解決

    Java使用Arrays.asList報(bào)UnsupportedOperationException的解決

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

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

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

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

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

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

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

    intellij idea 啟動(dòng)tomcat 1099端口被占用的解決

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論