guava函數(shù)式編程(過(guò)濾,轉(zhuǎn)換,約束)與集合

函數(shù)式編程

  1. 過(guò)濾
    Collections.filter(原內(nèi)容,過(guò)濾規(guī)則);返回一個(gè)新的list
/**
     * 過(guò)濾,找出回文
     */
    public static void test02() {
        List<String> list = Lists.newArrayList("big", "mom", "hoh", "dad", "refer", "Viking");
        Collection<String> list2 = Collections2.filter(list, new Predicate<String>() {

            // 匿名內(nèi)部類,只使用一次,因?yàn)闆](méi)有對(duì)象名
            public boolean apply(String input) {
                // 這里不滿足要求就會(huì)被過(guò)濾出去
                return new StringBuilder(input).reverse().toString().equals(input);
            }
        });

        for (String temp : list2) {
            System.out.println(temp);
        }
    }
  1. 轉(zhuǎn)換
    Collections2.transform();
public static void main(String[] args) {
        //類型轉(zhuǎn)換,function的意思是函數(shù)
        List<Long> longtime=new ArrayList<>();
        longtime.add(100000000L);
        longtime.add(999999999999999L);
        longtime.add(200000000L);
        
        Collection<String> timeStrCol=Collections2.transform(longtime, new Function<Long, String>() {

            public String apply(Long input) {
                
                return new SimpleDateFormat("yyyy-MM-dd").format(input);
            }
        });
        
        for(String temp:timeStrCol){
            System.out.println(temp);
        }
    }

函數(shù)嵌套使用

public static void main(String[] args) {
        //組合式函數(shù)編程
        //確保容器內(nèi)字符串的長(zhǎng)度不超過(guò)5,超過(guò)得部分截?cái)?,然后全轉(zhuǎn)換成大寫。
        List<String> list=Lists.newArrayList("hello","happiness","Viking","iloveu");
        
        Function<String, String> f1=new Function<String, String>() {
            //f1判斷是否長(zhǎng)度是否大于5,并采取截?cái)嗖僮?            public String apply(String input) {
                return input.length()>5?input.substring(0, 5):input;
            }
        };
        
        Function<String, String> f2=new Function<String, String>() {
            //f2將字符串轉(zhuǎn)成大寫的
            public String apply(String input) {
                return input.toUpperCase();
            }
        };
        
        //組合函數(shù)
        Function<String, String> f=Functions.compose(f1, f2);
        
        Collection<String> col=Collections2.transform(list, f);
        
        for(String temp:col){
            System.out.println(temp);
        }
    }
  1. 約束
    似乎guava里面沒(méi)有這個(gè)Constraint這個(gè)類或者借口了

集合的操作

  • 交集
    sets.intersection();
  • 差集
    sets.difference();
  • 并集
    sets.union();
public static void main(String[] args) {
        //集合操作
        Set<Integer> set1=Sets.newHashSet(1,2,3,4,5,6);
        Set<Integer> set2=Sets.newHashSet(4,5,6,7,8,9);
        
        Set<Integer> intersectionSet=Sets.intersection(set1, set2);
        System.out.println("交集:");
        for(Integer i:intersectionSet)
            System.out.print(i+"\t");
        
        Set<Integer> differenceSet=Sets.difference(set1, set2);
        System.out.println("\n"+"差集:");
        for(Integer i:differenceSet)
            System.out.print(i+"\t");
        
        Set<Integer> unionSet=Sets.union(set1, set2);
        System.out.println("\n"+"并集:");
        for(Integer i:unionSet)
            System.out.print(i+"\t");
        
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評(píng)論 19 139
  • 一、 1、請(qǐng)用Java寫一個(gè)冒泡排序方法 【參考答案】 public static void Bubble(int...
    獨(dú)云閱讀 1,510評(píng)論 0 6
  • 多態(tài) 任何域的訪問(wèn)操作都將有編譯器解析,如果某個(gè)方法是靜態(tài)的,它的行為就不具有多態(tài)性 java默認(rèn)對(duì)象的銷毀順序與...
    yueyue_projects閱讀 1,096評(píng)論 0 1
  • 【程序1】 題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    葉總韓閱讀 5,229評(píng)論 0 41
  • 很久了 我還在想象 不,那是回憶 我還想要和你走在暖陽(yáng)下 還想再多看一眼你眼里的我 那個(gè)蟬鳴的夏季 我遇見(jiàn)了最美的...
    里小木閱讀 117評(píng)論 0 1

友情鏈接更多精彩內(nèi)容