guava 學習一 函數,集合操做

pom數組

testapp

 

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>

        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </dependency>
View Code

 

guavaide

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>27.0.1-jre</version>
        </dependency>

 

 

 

1、FluentIterable測試

初始化數據google

// 這裏初始化一些測試數據
    @Before
    public void setUp() {
        Girl girl1 = new Girl(17, "nice");
        Girl girl2 = new Girl(18, "not so nice");
        Girl girl3 = new Girl(19, "nice");
        Girl girl4 = new Girl(20, "not so nice");
        // 這裏使用Lists.newArrayList添加對象,避免屢次調用list.add方法,下篇會有說明
        girls = Lists.newArrayList(girl1, girl2, girl3, girl4);
    }

    // 測試用Girl對象
    static class Girl {
        int age;
        String face;

 

過濾 from filterspa

/**
         * from方法:用於包裝Iterable接口,返回FluentIterable實例
         * filter方法:用於過濾集合中元素,返回過濾後的集合
         */
        FluentIterable<Girl> iterable = FluentIterable.from(girls).filter(new Predicate<Girl>(){

            @Override
            public boolean apply(@Nullable Girl input) {
                // 過濾相貌nice的Girl對象
                return "nice".equals(input.getFace());
            }
            
        });
        
        for (Girl girl : iterable) {
            System.out.println(girl.toString());
            // 輸出
            //Girl [age=17, face=nice]
            //Girl [age=19, face=nice]
        }
        
        

 

轉換transfrom  + 拼接.net

/**
         * transform方法:用於根據指定Function轉換集合元素,返回轉換後的集合
         */
        Iterable<String> fluentIterable = FluentIterable.from(girls).transform(new Function<Girl, String>() {
            @Override
            public String apply(Girl input) {
                //Joiner類對相應的元素內容進行拼接處理
                return Joiner.on(",").join(input.getAge(), input.getFace());
            }
        });
        for (String girl : fluentIterable) {
            /** 打印結果:
             17,nice
             18,not so nice
             19,nice
             20,not so nice
             */
            System.out.println(girl);
        }

 

2、Listrest

建立新的Listcode

LIst轉換處理orm

        ArrayList<String> newArrayList = Lists.newArrayList();
        
        List<String> keys = Lists.newArrayList("a", "b", "c", "a");
        
        
        
        /**
         * transform:根據傳進來的function對fromList進行相應的處理 並將處理獲得的結果存入到新的list對象中返回
         */
        List<String> newList = Lists.transform(keys, new Function<String, String>() {
            @Override
            public String apply(String input) {
                // 這裏簡單的對集合中的元素轉換爲大寫
                return input.toUpperCase();
            }
        });
        System.out.println(newList);// [I LOVE U, I LIKE U, I HATE U]
        
        
        String str = "i love u";// 測試用
        String[] strs = { "i like u", "i miss u" };// 測試用

/**
* asList:返回一個不可變的List 其中包含指定的第一個元素和附加的元素數組組成 修改這個數組將反映到返回的List上
*/
List<String> list = Lists.asList(str, strs);

分割、反轉
reverse

 

3、Map

建立、

將set轉成Map

HashMap<Object, Object> mapa = Maps.newHashMap();
        
        /**
         * asMap:返回一個活動的map
         * 鍵值爲給定的set中的值
         * value爲經過給定Function計算後的值。
         */
        Set<String> set = Sets.newHashSet("a", "b", "c");
        //Function:簡單的對元素作大寫轉換,下面示例屢次使用
        Function<String, String> function = new Function<String, String>() {
            @Override
            public String apply(String input) {
                return input.toUpperCase();
            }
        };
        //輸出:{b=B, c=C, a=A}
        System.out.println(Maps.asMap(set, function));

 

參考:https://my.oschina.net/realfighter?tab=newest&catalogId=576615

相關文章
相關標籤/搜索