1. 程式人生 > >Java基礎之集合題目

Java基礎之集合題目

1/*
 * 分析以下需求,並用程式碼實現:
 (1)生成10個1至100之間的隨機整數(不能重複),存入一個List集合(可以先不適用泛型,泛型明天講)
 (2)編寫方法對List集合進行排序
 (2)然後利用迭代器遍歷集合元素並輸出
 (3)如:15 18 20 40 46 60 65 70 75 91
 */
public class Demo {

    public static void main(String[] args) {
        List list = getRandomNumList();
        System.out.println("排序前的集合元素為:");
        System.out.println(list
); sort(list); System.out.println("排序後的集合元素為:"); System.out.println(list); } //定義生成隨機數並且裝入集合容器的方法 public static List getRandomNumList(){ //1.建立集合容器物件 List list = new ArrayList(); //2.建立Random物件 Random r = new Random(); /*for(int i = 0;i <= 9;i++){ int num = r.nextInt(100) + 1; }*/
while(list.size() != 10){ int num = r.nextInt(100) + 1; if(!list.contains(num)){ list.add(num); } } return list; } //使用氣泡排序(升序) public static void sort(List list){ for(int i = 0;i < list.size() - 1;i++){ for
(int j = 0;j < list.size() - 1 - i;j++){ int num1 = (int)list.get(j); int num2 = (int)list.get(j + 1); if(num1 > num2){ int temp = num1; num1 = (int)list.set(j, num2); num2 = (int)list.set(j + 1, temp); } } } } } 2/* * 分析以下需求,並用程式碼實現: 現有一個list集合如下, List alist = new ArrayList<>(); alist.add("sa"); alist.add("a"); alist.add("def"); alist.add("b"); alist.add("你好"); (1)利用迭代器遍歷這個集合! (2)定義一個方法method1 , 刪除集合中字串"def" , 並列印集合 (3)定義一個方法method2 , 將原集合中的元素"a"和"b"交換位置! 並列印集合 //註釋: 所有的方法都是針對原集合而言! */ public class Demo1 { public static void main(String[] args) { List alist = new ArrayList<>(); alist.add("sa"); alist.add("a"); alist.add("def"); alist.add("b"); alist.add("你好"); Iterator it = alist.iterator(); while(it.hasNext()){ Object obj = it.next(); System.out.println(obj); } method1(alist); System.out.println(alist); method2(alist); System.out.println(alist); } public static void method1(List list){ for (Iterator iterator = list.iterator(); iterator.hasNext();) { Object object = (Object) iterator.next(); if("def".equals(object)){ iterator.remove(); } } } public static void method2(List list){ int i1 = list.indexOf("a"); int i2 = list.indexOf("b"); list.set(i1, "b"); list.set(i2, "a"); } } 3/* * 分析以下需求,並用程式碼實現: (1)定義List集合,存入多個字串 (2)刪除集合中包含0-9數字的字串(只要字串中包含0-9中的任意一個數字就需要刪除此整個字串) (3)然後利用迭代器遍歷集合元素並輸出 List<String> list = new ArrayList<String>(); list.add("abce0fgh"); list.add("ab5e0f8gh"); list.add("000234ab5e0f8g9h"); list.add("abc"); list.add("def"); list.add("gh9i"); */ public class Demo2 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("abce0fgh"); list.add("ab5e0f8gh"); list.add("000234ab5e0f8g9h"); list.add("abc"); list.add("def"); list.add("gh9i"); deleteNum2(list); System.out.println(list); } public static void deleteNum2(List<String> list){ Iterator<String> it = list.iterator(); while(it.hasNext()){ String str = it.next(); for(int i = 0;i <= 9;i++){ if(str.contains(i + "")){ it.remove(); break; } } } } public static void deleteNum(List<String> list){ String regex = ".*\\d.*"; Iterator<String> it = list.iterator(); while(it.hasNext()){ String str = it.next(); if(str.matches(regex)){ it.remove(); } } } } /* * 1.分析以下需求,並用程式碼實現: (1)定義一個方法swap()傳入集合和兩個角標使集合中元素交換位置() (2)思路 a.定義一個臨時變數, 記住其中一個元素 b.用第一個位置存放第二個位置上的元素 c.用第二個位置存放臨時變數記住的元素 */ public class Demo { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); list.add("ee"); System.out.println(list); swap(list, 1, 3); System.out.println(list); System.out.println("---------"); ArrayList<Integer> list1 = new ArrayList<Integer>(); list1.add(111); list1.add(222); list1.add(333); list1.add(444); list1.add(555); System.out.println(list1); swap(list1, 1, 3); System.out.println(list1); } //定義一個方法用於交換集合中兩個元素的值 public static <T> void swap(List<T> list,int i,int j){ T t = list.get(i); list.set(i, list.get(j)); list.set(j, t); } } /* * 分析以下需求,並用程式碼實現: (1)定義一個Person型別(屬性私有、空參有參構造、set、get方法、toString方法、equals方法、hashCode方法), 包含兩個屬性:姓名(String name)、年齡(int age) (2)List集合中儲存多個Person物件,獲取年齡最大的Person物件並列印資訊 (3)思路 a.定義一個Person型別的變數, 先記住第一個元素 b.迴圈遍歷集合 c.用每一個元素和變數比較年齡, 如果集合中的元素比變數記住的年齡大 d.用變數記住這個年齡較大的元素 e.返回變數記住的元素 JavaBean */ public class Demo2 { public static void main(String[] args) { List<Person> list = new ArrayList<Person>(); list.add(new Person("張三", 20)); list.add(new Person("李四", 10)); list.add(new Person("王五", 50)); list.add(new Person("趙六", 40)); list.add(new Person("田七", 20)); System.out.println(getMaxAgePer(list)); } public static Person getMaxAgePer(List<Person> pers){ Person maxPer = pers.get(0); // 假設集合第一個元素的年齡最大的 for(Person per : pers){ if(maxPer.getAge() < per.getAge()){ maxPer = per; } } return maxPer; } } /*分析以下需求,並用程式碼實現: (1)將集合中的元素反轉 (2)思路 * a.定義迴圈, 迴圈size()/2次 b.第一次交換第一個和最後一個, 第二次交換第二個和倒數第二個 */ public class Demo3 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); list.add("eee"); System.out.println("反轉前的資料為:" + list); reverse(list); System.out.println("反轉後的資料為:" + list); } private static void reverse(List<String> list) { for(int start = 0,end = list.size() - 1;start <= end;start++,end--){ String str1 = list.get(start); String str2 = list.get(end); list.set(start, str2); list.set(end, str1); } } } /* * 分析以下需求,並用程式碼實現: (2)定義方法統計集合中指定元素出現的次數,如"a" 3,"b" 2,"c" 1 */ public class Demo4 { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("d"); list.add("d"); list.add("d"); list.add("d"); list.add("d"); System.out.println(frequency(list, "a")); // 3 System.out.println(frequency(list, "b")); // 2 System.out.println(frequency(list, "c")); // 1 System.out.println(frequency(list, "d")); // 5 System.out.println(frequency(list, "xxx")); // 0 } private static int frequency(List<String> list, String str) { int index = 0; //定義一個計數器 Iterator<String> it = list.iterator(); while(it.hasNext()){ String next = it.next(); if(str.equals(next)){ index++; } } return index; } } /* * 分析以下需求,並用程式碼實現: (1)定義一個replaceAll方法,用傳入集合的新值new 去替換 集合中指定的老值old(list,old,new) */ public class Demo5 { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("c"); System.out.println("替換前為:" + list); replaceAll(list,"a","aaa"); System.out.println("替換後為:" + list); } private static void replaceAll(List<String> list, String oldValue, String newValue) { //使用一般for迴圈來實現 for(int i = 0;i < list.size();i++){ String str = list.get(i); if(oldValue!=null && oldValue.equals(str)){ list.set(i, newValue); } } } }