數組Array,集合List,Set,Map相互轉換

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;
        }
    }


}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章