美文网首页
关于JAVA创建小集合的方法

关于JAVA创建小集合的方法

作者: dogiant | 来源:发表于2018-01-22 22:37 被阅读0次

    概述

    java开发中我们会经常需要构造一些个小集合(List,Set,Map)用于mock测试假数据返回等,本文将介绍几种集合的初始化方法。

    通常一种较为常见的方法是这样的

        @Test
        public void test() {
            Set<Integer> numbers = new HashSet<Integer>(); 
            numbers.add(111);
            numbers.add(222);
            numbers.add(3333);
            assertTrue(numbers.contains(111));
        }
    

    java因此也被经常被诟病其冗长繁琐,不够简洁。创建一个小小的集合,先要new一下,再调用好几次add。

    当然对于一个List来说有一个方法还算简洁

    List<Integer> list = Arrays.asList(1, 2, 3);
    

    另有一种不常见的方法是使用动态初始化块 { }

    Set<String> set = new HashSet<String>() {{
        add("a"); add("b"); add("c");
    }};
    

    JAVA 8中可以使用Stream来创建

    Set<String> set = Stream.of("foo", "bar", "baz").collect(toSet());
    List<String> list = Stream.of("foo", "bar", "baz").collect(toList());
    

    纵观上面的这些方法,似乎都不太尽人意,JAVA8的版本,虽然是一行代码,但也它仍然不够直观,还涉及创建了些不必要创建的对象,另外这种方法并不能用于创建一个Map。

    JAVA 9将给我们提供静态方法

    List、Set和Map接口提供了静态方法,这些接口将以元素作为参数,并分别返回List、Set和Map的实例

    List 和 Set 方法基本一样

    static <E> List<E> of(E e1, E e2, E e3)
    static <E> Set<E> of(E e1, E e2, E e3)
    用例:
    List<String> list = List.of("foo", "bar", "baz");
    Set<String> set = Set.of("foo", "bar", "baz");
    还可以这样
    int[] arr = { 1, 2, 3, 4, 5 };
    List<int[]> list = List.of(arr);

    Map的方法和用例

    方法:
    static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3)
    用例1:
    Map<String, String> map = Map.of("foo", "a", "bar", "b", "baz", "c");
    方法:
    static <K,V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries)
    用例2:
    Map<String, String> map = Map.ofEntries(
    new AbstractMap.SimpleEntry<>("foo", "a"),
    new AbstractMap.SimpleEntry<>("bar", "b"),
    new AbstractMap.SimpleEntry<>("baz", "c"));

    结语

    本文讲解了有关初始化创建小集合的常用方法,以及JAVA9的API演变。其中JAVA9 的方法使用上有些需要注意的地方,待后续使用中再作说明。

    相关文章

      网友评论

          本文标题:关于JAVA创建小集合的方法

          本文链接:https://www.haomeiwen.com/subject/piuraxtx.html