1. 程式人生 > 實用技巧 >Collection集合習題答案

Collection集合習題答案

基礎題

練習一:集合框架

一、請簡述集合框架。

集合按照其儲存結構可以分為兩大類,分別是單列集合java.util.Collection和雙列集合java.util.Map

Collection:單列集合類的根介面,用於儲存一系列符合某種規則的元素,它有兩個重要的子介面,分別是java.util.Listjava.util.Set。其中,List的特點是元素有序、元素可重複。Set的特點是元素無序,而且不可重複。List介面的主要實現類有java.util.ArrayListjava.util.LinkedListSet介面的主要實現類有java.util.HashSetjava.util.TreeSet

練習二:Collection集合統計元素出現次數

二、給定以下程式碼請定義方法listTest()統計集合中指定元素出現的次數,如"a": 2,"b": 2,"c" :1, "xxx":0

Collection<String> list = new ArrayList<>();

list.add("a");

list.add("a");

list.add("b");

list.add("b");

list.add("c");

System.out.println("a:"+listTest(list, "a"));

System.out.println("b:"+listTest(list, "b"));

System.out.println("c:"+listTest(list, "c"));

System.out.println("xxx:"+listTest(list, "xxx"));

  答案

public class CollectionTest01{
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");
        System.out.println("a:"+listTest(list, "a"));
        System.out.println("b:"+listTest(list, "b"));
        System.out.println("c:"+listTest(list, "c"));
        System.out.println("xxx:"+listTest(list, "xxx"));
    }

    //定義方法統計集合中指定元素出現的次數
    public static int listTest(Collection<String> list,String s){
        //定義計數器,初始化為0
        int count = 0;
        //增強for遍歷集合
        for (String string : list) {
            //判斷傳入方法的字元與遍歷集合的是否一致
            if (s.equals(string)) {
                //如果一致,加1
                count++;
            }
        }
        return count;
    }
}

  

練習三:Collection集合陣列轉集合

三、定義一個方法,要求此方法把int陣列轉成存有相同元素的集合(集合裡面的元素是Integer),並返回。()

public class CollectionTest02 {
    public static void main(String[] args) {
        //定義int陣列
        int[] arr = {1,2,3,4,5};
        ArrayList<Integer> list = listTest(arr);
        System.out.println(list);
    }

    public static ArrayList<Integer> listTest(int[] arr) {
        //定義集合
        ArrayList<Integer> list = new ArrayList<Integer>();
        //遍歷陣列,把元素依次新增到集合當中
        for (int a : arr) {
            list.add(a);
        }
        return list;
    }
}

  

練習四:Collection集合集合轉陣列

四、定義一個集合,並把集合(集合裡面的元素是Integer)轉成存有相同元素的陣列,並將結果輸出在控制檯。(可以使用Object[]陣列型別接收轉換的陣列)

public class CollectionTest03 {
    public static void main(String[] args) {
        //定義集合,新增資料
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(100);
        list.add(200);
        list.add(300);
        //Object[] toArray()轉換成一個Object陣列
        Object[] obj =  list.toArray();
        // 遍歷陣列
        for (int i = 0; i < obj.length; i++) {
            System.out.println(obj[i]);
        }
    }
}

  

練習五:Collection集合contains()方法使用

五、定義一個方法listTest(ArrayList<String> al, String s),要求使用contains()方法判斷al集合裡面是否包含s

public class CollectionTest04 {
    public static void main(String[] args) {
        //定義集合,新增資料
        ArrayList<String> list = new ArrayList<String>();
        list.add("itcast");
        list.add("itheima");
        list.add("java");
        System.out.println(listTest(list,"java"));
    }

    public static boolean listTest(ArrayList<String> al, String s) {
        //判斷s是否在集合中存在,存在返回true,不存在返回false
        if (al.contains(s)) {
            return true;
        }
       return false;
    }
}

  

練習六:Collection集合isEmpty()方法的使用

六、定義一個方法listTest(ArrayList<String> al), 要求使用isEmpty()判斷al裡面是否有元素。

public class CollectionTest04 {
    public static void main(String[] args) {
        //定義集合,新增資料
        ArrayList<String> list = new ArrayList<String>();
        list.add("itcast");
        list.add("itheima");
        list.add("java");
        System.out.println(listTest(list,"java"));
    }

    public static boolean listTest(ArrayList<String> al, String s) {
        //判斷s是否在集合中存在,存在返回true,不存在返回false
        if (al.contains(s)) {
            return true;
        }
       return false;
    }
}

  

練習七:簡述迭代器的實現原理

七、請簡述迭代器的實現原理

當遍歷集合時,首先通過呼叫集合的iterator()方法獲得迭代器物件,然後使用hashNext()方法判斷集合中是否存在下一個元素,如果存在,則呼叫next()方法將元素取出,否則說明已到達了集合末尾,停止遍歷元素。

Iterator迭代器物件在遍歷集合時,內部採用指標的方式來跟蹤集合中的元素,在呼叫Iteratornext()方法之前,迭代器的索引位於第一個元素之前,不指向任何元素,當第一次呼叫迭代器的next方法後,迭代器的索引會向後移動一位,指向第一個元素並將該元素返回,當再次呼叫next方法時,迭代器的索引會指向第二個元素並將該元素返回,依此類推,直到hasNext方法返回false,表示到達了集合的末尾,終止對元素的遍歷。

練習八:Collection集合返回首次出現索引

八、定義一個方法listTest(ArrayList<Integer> al, Integer s),要求返回sal裡面第一次出現的索引,如果s沒出現過返回-1

public class CollectionTest06 {
    public static void main(String[] args) {
        //定義集合,新增資料
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        System.out.println(listTest(list, 5));
    }

    public static int listTest(ArrayList<Integer> al, Integer s) {
        //遍歷集合,獲取元素,判斷元素是否與s相等,相等返回索引
        for (int i = 0; i < al.size(); i++) {
            if (al.get(i).equals(s)) {
                return i;
            }
        }
        return -1;
    }
}