欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组Array,集合List,Set,Map相互转换

程序员文章站 2022-05-14 09:07:09
...
package fengkuangjava.collection;

import org.junit.Test;
import org.omg.CORBA.OBJ_ADAPTER;

import java.lang.annotation.Repeatable;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class CollectionTest {
    /**
     * 定义数组
     */
    int[] arr = {1,2,4,2,7,3,8,2,3,4};
    String[] newArr = new String[]{"aaa","bbb","ccc"};
    String[] newArr2 = {"aaa","bbb","ccc"};
    /**
     * 数组Array转集合List
     */
    @org.junit.Test
    public void arrayToList(){
        //方法一:  使用Arrays工具类
        System.out.println("使用Arrays.asList()方法");
        List list = Arrays.asList(arr);
        List<Object> listInt = Arrays.asList(arr);
        List<String> listString = Arrays.asList(newArr);
        //方法二:采用Java8新特性
        System.out.println("使用Java8新特性方法");
        List<Object> list2 = Stream.of(arr).collect(Collectors.toList());
        System.out.println(list2);
    }


    /**
     *      数组Array转集合Set
     *      不能保证顺序
     */
    @org.junit.Test
    public void ArrayToList(){
        //方法一:Arrays工具类
        System.out.println("使用Arrays.asList()方法");
        Set<Object> set2 = new HashSet<>(Arrays.asList(arr));
        Set<String> setArr = new HashSet<>(Arrays.asList(newArr));

        List list = Arrays.asList(arr);
        List<String> listString = Arrays.asList(newArr);
        Set set = new HashSet<>(list);

        HashSet hashSet1 = new HashSet(list);
        HashSet hashSet2 = new HashSet<>(list);
        HashSet<String> hashSet3= new HashSet<>(list);
        HashSet hashSet4 = new HashSet(listString);
        HashSet hashSet5 = new HashSet<>(listString);
        HashSet<String> hashSet6= new HashSet<>(listString);

        //方法二:采用Java8新特性
        System.out.println("使用Java8新特性方法");
        Set<Object> set6 = Stream.of(newArr2).collect(Collectors.toSet());
        System.out.println(set6);
    }


    /**
     *      数组Array转Map
     */
    @Test
    public void ArrayToMap(){
        System.out.println("ArrayToMap");

        Map<Object,Object> map = new HashMap<>();
        int i = 1;
        for(Object o : newArr){
            map.put(i++,o);
        }
        System.out.println("HashMap的值:" + map);
    }
    
    /**
     *   List转数组Array
     */
    @org.junit.Test
    public void ListToArray(){
        System.out.println("ListToArray");
        List<String> list = new ArrayList<>();
        list.addAll(Arrays.asList(newArr));
        System.out.println("打印list;"+ list);
        //方法一
        String[] strings = list.toArray(new String[list.size()]);
        System.out.println(Arrays.toString(strings));
        //方法二:
        System.out.println("使用Java8新特性");
        String[] strings2 = list.stream().toArray(String[]::new);
        System.out.println(Arrays.toString(strings2));
    }

    /**
     *      List转为Set
     */
    @org.junit.Test
    public void ListToSet(){
        System.out.println("遍历集合List,使用add方法或addAll方法");
        Set<Object> set = new HashSet<>();
        List<Object> list = new ArrayList<>(Arrays.asList(newArr2));
        list.add("aaa");
        //set.add(list);
        System.out.println(set);
        System.out.println("-----------");
        for (Object i : list){
            set.add(i);
        }
        set.add("bbb");
        System.out.println( set.contains("bbb"));
        System.out.println(set);
    }

    /**
     *      List转Map
     */

    @Test
    public void ListToMap(){
        System.out.println("ListToMap");
        Map<Object,Object> map = new HashMap<>();
        List<Object> list = new ArrayList<>();
        list.add("上海");
        list.add("安徽");
        list.add("江苏");
        list.add("浙江");
        //方法一
        for(int i = 0;i<list.size();i++){
            map.put(i,list.get(i));
        }
        System.out.println(map);

        //方法二:Java8新特性
        List<Book> bookList = new ArrayList<>();
        bookList.add(new Book("平凡的世界",2004,"978702004845"));
        bookList.add(new Book("战争与和平",1989,"9787020014071"));
        bookList.add(new Book("百年孤独",1775,"9787215069657"));
        for(int i = 0; i< bookList.size();i++){
            System.out.println(bookList.get(i).toString());
        }
        Map<String,Integer> map2 = bookList.stream().collect(Collectors.toMap(Book::getName,Book::getReleaseYear));
        System.out.println(map2);
    }
    
    /**
     *    集合Set转为数组Array
     */
    @org.junit.Test
    public void SetToArray(){
        //方法一
        System.out.println("使用Set集合自带的toArray方法");
        Set<Object> set = new HashSet<>();
        set.addAll(Arrays.asList(newArr2));
        Object[] objects = set.toArray(new Object[set.size()]);
        System.out.println(Arrays.toString(objects));
        //方法二:
        System.out.println("使用Java8新特性");
        String[] strings = set.stream().toArray(String[]::new);
        System.out.println(Arrays.toString(strings));
    }

    /**
     *      Set转List
     */
    @org.junit.Test
    public void SetToList(){
        Set<Object> set = new HashSet<>(Arrays.asList(newArr));
        List<Object> list = new ArrayList<>(set);
        //或者直接声明
        List<Object> list2 = new ArrayList<>(new HashSet<>(Arrays.asList(newArr)));
        System.out.println(list);
        System.out.println(list2);
    }
    
    /**
     *      Set转Map
     */
    @Test
    public void SetToMap(){
        System.out.println("SetToMap");
        Map<Object,Object> map = new HashMap<>();
        Set<Object> set = new HashSet<>();
        set.add("北京");
        set.add("上海");
        set.add("深圳");
        set.add("广州");
        System.out.println(set);
        Iterator iterator = set.iterator();
        for(int i = 0;i<set.size();i++){
            map.put(i,iterator.next());
        }
        System.out.println(map);
    }

    /**
     *      Map转Array
     */
    @Test
    public void MapToArray(){
        System.out.println("MapToArray");
        Map<String,String> map = new HashMap<>();
        map.put("上海","上海");
        map.put("安徽","合肥");
        map.put("浙江","杭州");
        map.put("广东","广州");
        map.put("北京","北京");
        Object[][] strings = new Object[map.size()][2];
        Iterator iterator = map.entrySet().iterator();
        for(int i = 0; i < map.size(); i++){
            Map.Entry entry = (Map.Entry) iterator.next();
            strings[i][0] = entry.getKey();
            strings[i][1] = entry.getValue();
        }

        for(Object[] objects : strings) {
            for (Object object : objects) {
                System.out.print(object + "  ");
            }
            System.out.println();
        }
    }

    /**
     *      Map转List
     */
    @Test
    public void MapToList(){
        System.out.println("MapToList");
        Map<String,String> map = new HashMap<>();
        map.put("上海","上海");
        map.put("安徽","合肥");
        map.put("浙江","杭州");
        map.put("广东","广州");
        map.put("北京","北京");
        List<Object> objects = new ArrayList<>(map.keySet());
        System.out.println(objects);
        //list里放list
        List<List<Object>> list = new ArrayList<>();
        for(Object o : map.keySet()){
            List<Object> list2 = new ArrayList<>();
            list2.add(o);
            list2.add(map.get(o));
            list.add(list2);
        }
        System.out.println(list);
    }

    /**
     *      Map转Set
     */
    @Test
    public void MapToSet(){
        System.out.println("MapToSet");
        Map<String,String> map = new HashMap<>();
        map.put("上海","上海");
        map.put("安徽","合肥");
        map.put("浙江","杭州");
        map.put("广东","广州");
        map.put("北京","北京");
        Set<Object> objects = new HashSet<>(map.keySet());
        System.out.println(objects);
    }
    //新建一个内部Book类用于Map测试
    class Book{
        private String name;
        private Integer releaseYear;
        private String isbn;

        @Override
        public String toString() {
            return "Book{" +
                    "name='" + name + '\'' +
                    ", releaseYear=" + releaseYear +
                    ", isbn='" + isbn + '\'' +
                    '}';
        }

        public Book(String name, Integer releaseYear, String isbn) {
            this.name = name;
            this.releaseYear = releaseYear;
            this.isbn = isbn;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getReleaseYear() {
            return releaseYear;
        }

        public void setReleaseYear(Integer releaseYear) {
            this.releaseYear = releaseYear;
        }

        public String getIsbn() {
            return isbn;
        }

        public void setIsbn(String isbn) {
            this.isbn = isbn;
        }
    }


}