Collection集合習題答案
基礎題
練習一:集合框架
一、請簡述集合框架。
集合按照其儲存結構可以分為兩大類,分別是單列集合java.util.Collection和雙列集合java.util.Map。
Collection:單列集合類的根介面,用於儲存一系列符合某種規則的元素,它有兩個重要的子介面,分別是java.util.List和java.util.Set。其中,List的特點是元素有序、元素可重複。Set的特點是元素無序,而且不可重複。List介面的主要實現類有java.util.ArrayList和java.util.LinkedList,Set介面的主要實現類有java.util.HashSet和java.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迭代器物件在遍歷集合時,內部採用指標的方式來跟蹤集合中的元素,在呼叫Iterator的next()方法之前,迭代器的索引位於第一個元素之前,不指向任何元素,當第一次呼叫迭代器的next方法後,迭代器的索引會向後移動一位,指向第一個元素並將該元素返回,當再次呼叫next方法時,迭代器的索引會指向第二個元素並將該元素返回,依此類推,直到hasNext方法返回false,表示到達了集合的末尾,終止對元素的遍歷。
練習八:Collection集合返回首次出現索引
八、定義一個方法listTest(ArrayList<Integer> al, Integer s),要求返回s在al裡面第一次出現的索引,如果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; } }