最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Array、List、Map相互轉(zhuǎn)換的方法詳解

 更新時間:2023年08月25日 10:56:23   作者:流蘇打  
這篇文章主要介紹了Java中Array、List、Map相互轉(zhuǎn)換的方法詳解,在實際項目開發(fā)中或者一些算法面試題目中經(jīng)常需要用到Java中這三種類型的相互轉(zhuǎn)換,比如對于一個整型數(shù)組中尋找一個整數(shù)與所給的一個整數(shù)值相同,需要的朋友可以參考下

引言

在實際項目開發(fā)中或者一些算法面試題目中經(jīng)常需要用到Java中這三種類型的相互轉(zhuǎn)換,比如對于一個整型數(shù)組中尋找一個整數(shù)與所給的一個整數(shù)值相同,正常情況下第一反應(yīng)會想到用for循環(huán)直接遍歷這個數(shù)組就可以實現(xiàn),不過這種情況下時間復(fù)雜度將會是O(n),空間復(fù)雜度是O(1)。

如果再多加幾個條件還使用多層for循環(huán)嵌套的話也可以實現(xiàn),不過時間復(fù)雜度將會以指數(shù)級增長。

我們可以說多層for循環(huán)嵌套可以實現(xiàn)功能,但就執(zhí)行時間來說,它絕不會是一個好的解決方法。那么如何降低時間復(fù)雜度呢,這個時候我們可以考慮一下將這個整型數(shù)組轉(zhuǎn)換為一個Map,因為Map是以key,value鍵值對形式存儲,value允許重復(fù),但是key不允許重復(fù)。

使用Map中map.containsKey()方法可以輕松實現(xiàn)對于key是否存在一個值的查找,此種方法時間復(fù)雜度為O(1),空間復(fù)雜度為O(n),其中 n是數(shù)組中的元素數(shù)量,主要為哈希表的開銷。

這就降低了方法的執(zhí)行時間,算是一種算法上的優(yōu)化。

補充

一個好的算法要求正確性、可讀性、健壯性、時間效率高而且空間使用率低、簡單性。

算法的復(fù)雜度分為時間復(fù)雜度和空間復(fù)雜度。

時間復(fù)雜度:

時間復(fù)雜度實際上是一個函數(shù),代表基本操作重復(fù)執(zhí)行的次數(shù),進而分析函數(shù)雖變量的變化來確定數(shù)量級,數(shù)量級用O表示,如O(1),O(n),O(n^2)等。

空間復(fù)雜度:

是對一個算法在運行過程中臨時占用存儲空間的度量,一個算法在計算機存儲器上所占用的存儲空間包括存儲算法本身所占用的空間,算數(shù)和輸入輸出所占用的存儲空間以及臨時占用存儲空間三個部分,算法的輸入輸出數(shù)據(jù)所占用的存儲空間是由待解決的問題來決定的,通過參數(shù)表由調(diào)用函數(shù)而來,它隨本算法的不同而改變,存儲算法本身所占用的存儲空間有算法的書寫長短成正比。算法在運行過程中占用的臨時空間由不同的算法決定。

時間復(fù)雜度與空間復(fù)雜度沒有必然聯(lián)系,但是也有以空間換時間或時間換空間,現(xiàn)今項目中一般要求效率,大部分需要降低執(zhí)行時間即降低時間復(fù)雜度,以空間換時間來提高效率。不過在這兩者之間取舍需要具體問題具體分析。

正文:

Array轉(zhuǎn)List:

有兩種方法可以將array轉(zhuǎn)為list,一種是使用Arrays.asList()方法直接轉(zhuǎn)換,不過此種方法的list長度固定,無法進行添加刪除操作。

另一種是使用for循環(huán)遍歷數(shù)組元素逐個添加進一個空的list中。

    /**
     * 方法一:使用Arrays.asList()方法將數(shù)組轉(zhuǎn)為list,不過此種方法有限制,返回的對象是Arrays的內(nèi)部類
     * 對于轉(zhuǎn)換后的list操作仍然反映在原數(shù)組上,因此這個list是定長的,無法使用list的add()喝remove()方法
     */
    public static void array_list(String[] array){
       List<String> list = Arrays.asList(array);
        System.out.println("數(shù)組轉(zhuǎn)List 的第一種方法:"+list);
//        list.remove("李四");
//        list.add("劉六");
//        System.out.println(“修改后:”list);
    }
    /**
     * 方法二:正常情況下array轉(zhuǎn)換為list,使用for循環(huán)將數(shù)組中的元素逐個添加到一個空的list中
     */
    public static void array_list2(String[] array){
        List<String> list = new ArrayList<>();
        for (int i=0;i<array.length;i++){
                list.add(array[i]);
        }
        System.out.println("數(shù)組轉(zhuǎn)List 的第二種方法:"+list);
        list.remove("李四");
        list.add("劉六");
        System.out.println("修改后:"+list);
    }

List轉(zhuǎn)為Array:

使用list.toArray()將List直接轉(zhuǎn)換為Array

    //List轉(zhuǎn)Array
    public static void list_array(List<String> list){
        String[] array =list.toArray(new String[list.size()]);
        System.out.println("List轉(zhuǎn)數(shù)組:"+array);
    }

Array轉(zhuǎn)Map:

當數(shù)組是一維數(shù)組時,奇數(shù)位是key鍵,偶數(shù)位是value值。數(shù)組有奇數(shù)個元素時,舍棄最后一個元素。

    //Array轉(zhuǎn)Map
    /**
     *一維數(shù)組時,奇數(shù)位為key鍵,偶數(shù)位為value,如果有奇數(shù)個元素,最后一個舍掉
     */
    public static void array_map(String[] array) {
        Map map = MapUtils.putAll(new HashMap(),array);
        System.out.println("數(shù)組轉(zhuǎn)Map:"+map);
    }

當數(shù)組是二維數(shù)組時,可以看作兩個一維數(shù)組,使用ArrayUtils.toMap()方法轉(zhuǎn)換

    /**
     * 二維數(shù)組時,當成兩個一維數(shù)組,使用ArrayUtils.toMap()方法轉(zhuǎn)換
     */
    public static void array_map2(String[][] array2){
        Map map2 = ArrayUtils.toMap(array2);
        map2.put("南昌","江西");
        System.out.println("二維數(shù)組轉(zhuǎn)Map:"+map2);
    }

Map轉(zhuǎn)Array

Map只需要value值時,將Map的values轉(zhuǎn)為一維數(shù)組:

使用map.values().toArray()方法將map轉(zhuǎn)為object類型的數(shù)組,特定類型數(shù)組需要再次轉(zhuǎn)換。

    //Map轉(zhuǎn)Array
    /**
     *Map只需要value值時,將Map的values轉(zhuǎn)為一維數(shù)組
     *使用map.values().toArray()將map轉(zhuǎn)為object數(shù)組,如果想要轉(zhuǎn)為特定類型的數(shù)組需要再進一步轉(zhuǎn)換
     */
    public static void map_array(Map<Integer,String> map){
        Object[] obj =  map.values().toArray();
        /**
         * 第一種,使用Arrays.copyOf()方法將原數(shù)組內(nèi)的元素拷貝到一個新的String類型的數(shù)組
         * Arrays.copyOf(原數(shù)組,復(fù)制的長度,指定轉(zhuǎn)換的類型)
         */
        String[] array = Arrays.copyOf(obj,obj.length,String[].class);
        System.out.println("Map轉(zhuǎn)Array的第一種方法:"+array);
        /**
         * 第二種方法,直接強制轉(zhuǎn)換數(shù)組為指定類型
         * 此處toArray()中的參數(shù)需要一個T[] a,new String[0]相當于開辟了一個長度為0的String[],并且指定了泛型。
         * 這里的用new String[0]只是為了指定函數(shù)的形參數(shù),最終返回的String[]的長度是由你的list存儲內(nèi)容的長度決定了。
         * new String[0]就是起一個模板的作用,指定了返回數(shù)組的類型,0是為了節(jié)省空間,因為它只是為了說明返回的類型。
         * 因此list.toArray()方法中的參數(shù)也可以使用String[0]來指代
         */
        String[] array2 =map.values().toArray(new String[0]);
        System.out.println("Map轉(zhuǎn)Array的第二種方法:"+array2);
        /**
         * 第三種方法,使用Java8中Arrays.stream()方法,將對象數(shù)組轉(zhuǎn)為順序Stream,然后使用toArray方法將流的元素累積到新的字符串數(shù)組中
         * String[]::new 是Java8中新定義的一種寫法叫做方法引用,以下這種寫法是調(diào)用了構(gòu)造器引用,為了生成一個String類型數(shù)組
         */
        String[] array3 = Arrays.stream(obj).toArray(String[]::new);
        System.out.println("Map轉(zhuǎn)Array的第三種方法:"+array3);
    }

Map需要保留key與value時,將Map轉(zhuǎn)為二維數(shù)組:

    /**
     * 第二種:使用for循環(huán)和迭代器遍歷這個map,將它的key與value逐個添加到一個定長的二維數(shù)組中
     */
        public static void map_array2(Map<Integer,String> map){
            if (map!=null && !map.isEmpty()){
                //以map的長度作為二維數(shù)組的長度,其中每個元素就是一個長度為2的小數(shù)組存放key與value
                Object[][] obj = new Object[map.size()][2];
                /**
                 * map.entrySet()是把HashMap類型的數(shù)據(jù)轉(zhuǎn)換成集合類型
                 * map.entrySet().iterator()是去獲得這個集合的迭代器,保存在iterator里面。
                 */
                Iterator iterator = map.entrySet().iterator();
               for(int i=0;i<map.size();i++){
                    Map.Entry entry = (Map.Entry) iterator.next();
                    Object key = entry.getKey();
                    Object value = entry.getValue();
                    obj[i][0] = key;
                    obj[i][1] = value;
                }
                System.out.println("Map轉(zhuǎn)為二維數(shù)組Array:"+obj);
            }
        }

List轉(zhuǎn)Map:

通常情況下我們從數(shù)據(jù)庫中獲取的都是多條數(shù)據(jù)的list,即多條指定對象格式數(shù)據(jù)來轉(zhuǎn)換Map。

這時候需要使用一個Student(int id,int age,String name,String sex)來輔助我們實現(xiàn)。

  //List轉(zhuǎn)Map
    /**
     *通常情況下我們都是充數(shù)據(jù)庫中查出一個具體對象多條數(shù)據(jù)的list,以下我們就使用一個Student類來輔助實現(xiàn)
     */
    public static void list_map(List<Student> studentList){
        //第一種方法:使用for循環(huán)遍歷list逐個插入map中
        Map<Integer,Object> map = new HashMap<>();
        for(Student student:studentList){
            map.put(student.getId(),student);
        }
        System.out.println("List轉(zhuǎn)Map的第一種方法:"+map);
        /**
         *  第二種方法,使用Java8中stream中的Collectors.toMap方法進行轉(zhuǎn)換。
         *  如果你的key鍵沒有設(shè)定唯一值,防止key鍵重復(fù),使用Java8新特性中的lambda表達式來表示如果重復(fù),后面就就會覆蓋
         */
        Map<Integer,String> map2 = studentList.stream().collect
                (Collectors.toMap(Student::getId,Student::getName,(key1,key2)->key2));
        System.out.println("List轉(zhuǎn)Map的第二種方法:"+map2);
    }

Map轉(zhuǎn)List:

Map中的value值轉(zhuǎn)List就直接轉(zhuǎn)換即可

    //Map轉(zhuǎn)List
    public static void map_list(Map<Integer,String> map){
        List<String> list = new ArrayList(map.values());
        System.out.println("Map轉(zhuǎn)List:"+list);
    }

完整工具類代碼:array_map_list

package com.example.demo.utils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.ArrayUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author zhangqianwei
 * @date 2021/9/6 15:38
 */
public class array_map_list {
    //Array、Map、List相互轉(zhuǎn)換
    public static void main(String[] args) {
        String[] array = {"張三","李四","王五"};
        //Array轉(zhuǎn)List
        array_list(array);
        array_list2(array);
        //List轉(zhuǎn)Array
        List<String> list = new ArrayList<>();
        list.add("手機");
        list.add("電腦");
        list.add("平板");
        list_array(list);
        //Array轉(zhuǎn)Map
        array_map(array);
        String[][] array2 = { { "南京", "江蘇" }, { "武漢", "湖北" },
                { "合肥", "安徽" }, { "杭州", "浙江" }, { "長沙", "湖南" } };
        array_map2(array2);
        //Map轉(zhuǎn)Array
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"一");
        map.put(2,"二");
        map.put(3,"三");
        map_array(map);
        map_array2(map);
        //List轉(zhuǎn)Map
        Student student = new Student();
        student.setId(1);
        student.setName("小張");
        student.setAge(18);
        student.setSex("男");
        Student student2 = new Student();
        student2.setId(2);
        student2.setName("小王");
        student2.setAge(19);
        student2.setSex("男");
        Student student3 = new Student();
        student3.setId(3);
        student3.setName("小李");
        student3.setAge(17);
        student3.setSex("女");
        List<Student> studentList = new ArrayList<>();
        studentList.add(student);
        studentList.add(student2);
        studentList.add(student3);
        list_map(studentList);
        //Map轉(zhuǎn)List
        map_list(map);
    }
    //數(shù)組Array轉(zhuǎn)List
    /**
     * 方法一:使用Arrays.asList()方法將數(shù)組轉(zhuǎn)為list,不過此種方法有限制,返回的對象是Arrays的內(nèi)部類
     * 對于轉(zhuǎn)換后的list操作仍然反映在原數(shù)組上,因此這個list是定長的,無法使用list的add()喝remove()方法
     */
    public static void array_list(String[] array){
       List<String> list = Arrays.asList(array);
        System.out.println("數(shù)組轉(zhuǎn)List 的第一種方法:"+list);
//        list.remove("李四");
//        list.add("劉六");
//        System.out.println(“修改后:”list);
    }
    /**
     * 方法二:正常情況下array轉(zhuǎn)換為list,使用for循環(huán)將數(shù)組中的元素逐個添加到一個空的list中
     */
    public static void array_list2(String[] array){
        List<String> list = new ArrayList<>();
        for (int i=0;i<array.length;i++){
                list.add(array[i]);
        }
        System.out.println("數(shù)組轉(zhuǎn)List 的第二種方法:"+list);
        list.remove("李四");
        list.add("劉六");
        System.out.println("修改后:"+list);
    }
    //List轉(zhuǎn)Array
    public static void list_array(List<String> list){
        String[] array =list.toArray(new String[list.size()]);
        System.out.println("List轉(zhuǎn)數(shù)組:"+array);
    }
    //Array轉(zhuǎn)Map
    /**
     *一維數(shù)組時,奇數(shù)位為key鍵,偶數(shù)位為value,如果有奇數(shù)個元素,最后一個舍掉
     */
    public static void array_map(String[] array) {
        Map map = MapUtils.putAll(new HashMap(),array);
        System.out.println("數(shù)組轉(zhuǎn)Map:"+map);
    }
    /**
     * 二維數(shù)組時,當成兩個一維數(shù)組,使用ArrayUtils.toMap()方法轉(zhuǎn)換
     */
    public static void array_map2(String[][] array2){
        Map map2 = ArrayUtils.toMap(array2);
        map2.put("南昌","江西");
        System.out.println("二維數(shù)組轉(zhuǎn)Map:"+map2);
    }
    //Map轉(zhuǎn)Array
    /**
     * Map只需要value值時,將Map的values轉(zhuǎn)為一維數(shù)組
     *使用map.values().toArray()將map轉(zhuǎn)為object數(shù)組,如果想要轉(zhuǎn)為特定類型的數(shù)組需要再進一步轉(zhuǎn)換
     */
    public static void map_array(Map<Integer,String> map){
        Object[] obj =  map.values().toArray();
        /**
         * 第一種,使用Arrays.copyOf()方法將原數(shù)組內(nèi)的元素拷貝到一個新的String類型的數(shù)組
         * Arrays.copyOf(原數(shù)組,復(fù)制的長度,指定轉(zhuǎn)換的類型)
         */
        String[] array = Arrays.copyOf(obj,obj.length,String[].class);
        System.out.println("Map轉(zhuǎn)Array的第一種方法:"+array);
        /**
         * 第二種方法,直接強制轉(zhuǎn)換數(shù)組為指定類型
         * 此處toArray()中的參數(shù)需要一個T[] a,new String[0]相當于開辟了一個長度為0的String[],并且指定了泛型。
         * 這里的用new String[0]只是為了指定函數(shù)的形參數(shù),最終返回的String[]的長度是由你的list存儲內(nèi)容的長度決定了。
         * new String[0]就是起一個模板的作用,指定了返回數(shù)組的類型,0是為了節(jié)省空間,因為它只是為了說明返回的類型。
         * 因此list.toArray()方法中的參數(shù)也可以使用String[0]來指代
         */
        String[] array2 =map.values().toArray(new String[0]);
        System.out.println("Map轉(zhuǎn)Array的第二種方法:"+array2);
        /**
         * 第三種方法,使用Java8中Arrays.stream()方法,將對象數(shù)組轉(zhuǎn)為順序Stream,然后使用toArray方法將流的元素累積到新的字符串數(shù)組中
         * String[]::new 是Java8中新定義的一種寫法叫做方法引用,以下這種寫法是調(diào)用了構(gòu)造器引用,為了生成一個String類型數(shù)組
         */
        String[] array3 = Arrays.stream(obj).toArray(String[]::new);
        System.out.println("Map轉(zhuǎn)Array的第三種方法:"+array3);
    }
    /**
     * 第二種:使用for循環(huán)和迭代器遍歷這個map,將它的key與value逐個添加到一個定長的二維數(shù)組中
     */
        public static void map_array2(Map<Integer,String> map){
            if (map!=null && !map.isEmpty()){
                //以map的長度作為二維數(shù)組的長度,其中每個元素就是一個長度為2的小數(shù)組存放key與value
                Object[][] obj = new Object[map.size()][2];
                /**
                 * map.entrySet()是把HashMap類型的數(shù)據(jù)轉(zhuǎn)換成集合類型
                 * map.entrySet().iterator()是去獲得這個集合的迭代器,保存在iterator里面。
                 */
                Iterator iterator = map.entrySet().iterator();
               for(int i=0;i<map.size();i++){
                    Map.Entry entry = (Map.Entry) iterator.next();
                    Object key = entry.getKey();
                    Object value = entry.getValue();
                    obj[i][0] = key;
                    obj[i][1] = value;
                }
                System.out.println("Map轉(zhuǎn)為二維數(shù)組Array:"+obj);
            }
        }
    //List轉(zhuǎn)Map
    /**
     *通常情況下我們都是充數(shù)據(jù)庫中查出一個具體對象多條數(shù)據(jù)的list,以下我們就使用一個Student類來輔助實現(xiàn)
     */
    public static void list_map(List<Student> studentList){
        //第一種方法:使用for循環(huán)遍歷list逐個插入map中
        Map<Integer,Object> map = new HashMap<>();
        for(Student student:studentList){
            map.put(student.getId(),student);
        }
        System.out.println("List轉(zhuǎn)Map的第一種方法:"+map);
        /**
         *  第二種方法,使用Java8中stream中的Collectors.toMap方法進行轉(zhuǎn)換。
         *  如果你的key鍵沒有設(shè)定唯一值,防止key鍵重復(fù),使用Java8新特性中的lambda表達式來表示如果重復(fù),后面就就會覆蓋
         */
        Map<Integer,String> map2 = studentList.stream().collect
                (Collectors.toMap(Student::getId,Student::getName,(key1,key2)->key2));
        System.out.println("List轉(zhuǎn)Map的第二種方法:"+map2);
    }
    //Map轉(zhuǎn)List
    public static void map_list(Map<Integer,String> map){
        List<String> list = new ArrayList(map.values());
        System.out.println("Map轉(zhuǎn)List:"+list);
    }
}

結(jié)果顯示:

到此這篇關(guān)于Java中Array、List、Map相互轉(zhuǎn)換的方法詳解的文章就介紹到這了,更多相關(guān)Java中集合的轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Idea?springboot?springCloud熱加載熱調(diào)試兩種常用方式

    Idea?springboot?springCloud熱加載熱調(diào)試兩種常用方式

    這篇文章主要介紹了Idea?springboot?springCloud熱加載熱調(diào)試常用的兩種方式,在項目開發(fā)的過程中,需要修改調(diào)試的時候偶每次都需要重啟項目浪費時間,下面是我整理的兩種常用的兩種方式,需要的朋友可以參考下
    2023-04-04
  • Java function函數(shù)式接口的使用方法與實例

    Java function函數(shù)式接口的使用方法與實例

    這篇文章主要介紹了Java function函數(shù)式接口的使用方法與實例,函數(shù)式接口如一支未完成的詩篇,用Lambda表達式作韻腳,將代碼的機械美感與藝術(shù)的抽象融為一體,悄然重構(gòu)了開發(fā)者對代碼之美的認知,需要的朋友可以參考下
    2025-02-02
  • Java線程通信及線程虛假喚醒知識總結(jié)

    Java線程通信及線程虛假喚醒知識總結(jié)

    今天給大家?guī)淼氖顷P(guān)于Java線程的相關(guān)知識,文章圍繞著Java線程通信及線程虛假喚醒的知識展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Spring?IOC?常用注解與使用實例詳解

    Spring?IOC?常用注解與使用實例詳解

    這篇文章主要介紹了Spring?IOC?常用注解與使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 深入理解java動態(tài)代理機制

    深入理解java動態(tài)代理機制

    本篇文章主要介紹了深入理解java動態(tài)代理機制,詳細的介紹動態(tài)代理有哪些應(yīng)用場景,什么是動態(tài)代理,怎樣使用,它的局限性在什么地方?有興趣的可以了解一下。
    2017-02-02
  • Java Web文件上傳與下載優(yōu)化的實現(xiàn)方案

    Java Web文件上傳與下載優(yōu)化的實現(xiàn)方案

    文件上傳與下載是 Web 應(yīng)用中常見的功能,尤其是在需要處理大量文件傳輸、存儲的場景下,傳統(tǒng)的文件上傳和下載方式雖然簡單,但如果不加以優(yōu)化,可能會帶來一些問題,所以今天,我們將深入探討 Java Web 中如何實現(xiàn)高效的文件上傳和下載,需要的朋友可以參考下
    2025-02-02
  • java桌球小游戲 小球任意角度碰撞

    java桌球小游戲 小球任意角度碰撞

    這篇文章主要為大家詳細介紹了java桌球小游戲,小球任意角度碰撞,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 詳解java生成json字符串的方法

    詳解java生成json字符串的方法

    本篇文章主要介紹了java生成json字符串的方法,包括map對象轉(zhuǎn)換成json對象,list轉(zhuǎn)換成json,json轉(zhuǎn)換成list和map,有興趣的可以了解一下。
    2017-01-01
  • 在springboot中如何使用線程池

    在springboot中如何使用線程池

    在SpringBoot中,可以通過定義ThreadPoolTaskExecutor的Bean并使用@Autowired注入來使用線程池,具體步驟包括創(chuàng)建ThreadPoolTaskExecutor的Bean配置,本文給大家介紹springboot使用線程池的例子,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • 如何為?Spring?Boot?項目配置?Logback?日志

    如何為?Spring?Boot?項目配置?Logback?日志

    由于?Spring?Boot?的默認日志框架選用的?Logback,再加上?Log4j2?之前爆過嚴重的漏洞,所以我們這次就只關(guān)注?Logback,本文重點給大家介紹如何為?Spring?Boot?項目配置?Logback?日志,感興趣的朋友跟隨小編一起看看吧
    2024-07-07

最新評論

东兴市| 灵丘县| 靖安县| 延庆县| 金川县| 北安市| 宜宾县| 和田县| 黎平县| 东明县| 蒲城县| 石景山区| 桐庐县| 永靖县| 余姚市| 苍山县| 萝北县| 宝应县| 沅陵县| 峨边| 榆林市| 永春县| 焉耆| 科技| 衡阳县| 清流县| 沙坪坝区| 山丹县| 关岭| 勃利县| 临洮县| 乃东县| 团风县| 建宁县| 孟村| 江油市| 嘉禾县| 新化县| 高唐县| 石棉县| 盘锦市|