JavaSE各阶段练习题----集合-Collection-Set-List
1.分析以下需求,并用代碼實現:
??(1)有如下代碼:
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
(2)定義方法統計集合中指定元素出現的次數,如"a" 3,"b" 2,"c" 1
?
| package?com.henu.jihe; ? import?java.util.ArrayList; import?java.util.List; ? public?class?Demo01 { 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 ? ? } public?static?int?frequency(List<String> list,String str) { int?count?= 0; for?(int?i?= 0; i?< list.size(); i++) { if?(str.equals(list.get(i))) { count++; } } return?count; } } ? |
?
2 分析以下需求,并用代碼實現:
(1)生成10個1至100之間的隨機整數(不能重復),存入一個List集合
(2)編寫方法對List集合進行排序
(2)然后利用迭代器遍歷集合元素并輸出
(3)如:15 18 20 40 46 60 65 70 75 91
| package?com.henu.jihe; ? import?java.util.ArrayList; import?java.util.Iterator; import?java.util.List; import?java.util.Random; ? public?class?Demo02 { public?static?void?main(String[] args) { List<Integer> list?= new?ArrayList<Integer>(); Random random?= new?Random(); while?(true) { int?pl?= 1; int?num?= 1+random.nextInt(100); for?(int?i?= 0; i?< list.size(); i++) { if?(num?== list.get(i)) { pl?= 0; } } if?(pl?== 1) list.add(num); if?(list.size() == 10) break; } listSort(list); Iterator<Integer> iterator?= list.iterator(); while?(iterator.hasNext()) { Integer integer?= (Integer) iterator.next(); System.out.println(integer); } } ? public?static?void?listSort(List<Integer> list) { int?size?= list.size(); for?(int?i?= 0; i?< size-1; i++) { for?(int?j?= 0; j?< size-i-1; j++) { int?a?= list.get(j); int?b?= list.get(j+1); if?(a?> b) { // int?temp?= a; // a = b; // b = temp;//這樣的話不就是比較ab的值了嗎?和list就沒有了關系 // list.get(j+1) = list.get(j); /*這樣會出錯你可以把一個對象賦值給一個引用(變量), ?* 但是你不能把對象賦值給對象。就好像你可以用盒子來裝電腦,但是不能用電腦來裝電腦。 ?*/ // final List l = list; ????????list.remove(j); ????????list.remove(j); ????????list.add(j, b); ????????list.add(j+1, a); } } } } ? } ? |
?
3 編寫一個類Book,具有name,price,press,author 然后創建5個對象放入ArrayList中,并實現按照price大小排序,
然后遍歷ArrayList輸出每個Book對象, 使用toString 方法打印。
| package?com.henu.jihe; ? import?java.util.ArrayList; import?java.util.Comparator; import?java.util.List; import?java.util.Set; import?java.util.TreeSet; ? public?class?Demo03 { public?static?void?main(String[] args) { Book b1?= new?Book("AI時代我們應該做些什么",109,"清華大學出版社","李孟冬"); Book b2?= new?Book("AI會毀滅人類嗎?",99,"河南大學出版社","李孟冬"); Book b3?= new?Book("AI來臨前的人性思考",79,"人民出版社","李孟冬"); Book b4?= new?Book("這本就是一首愛你的詩",59,"清華大學出版社","李孟冬"); Book b5?= new?Book("java的大發展",80,"清華大學出版社","李孟冬"); Set<Book> ts?= new?TreeSet<Book>(); ts.add(b1); ts.add(b2); ts.add(b3); ts.add(b4); ts.add(b5); for?(Book book?: ts) { System.out.println(book.toString()); } } } ? ? class?Book implements?Comparable<Book>{ private?String name; private?int?price; private?String press;//出版社 private?String author; public?Book() { } public?Book(String name, int?price, String press, String author) { this.name?= name; this.price?= price; this.press?= press; this.author?= author; } @Override public?String toString() { return?"Book [name="?+ name?+ ", price="?+ price?+ ", press="?+ press?+ ", author="?+ author?+ "]"; } @Override public?int?compareTo(Book o) { return?this.price?- o.price; } ? }? |
?
?
4 把如下元素存入List集合
???"aaa" "bbb" ?"aaa" ??"abc" ?"xyz" "123" "xyz"
???
??去掉重復元素
??
| package?com.henu.jihe; ? import?java.util.ArrayList; import?java.util.HashMap; import?java.util.Iterator; import?java.util.List; import?java.util.Map; import?java.util.Map.Entry; ? import?java.util.Set; ? ? public?class?Demo04 { public?static?void?main(String[] args) { List<String> list?= new?ArrayList<String>(); list.add("aaa"); list.add("bbb"); list.add("aaa"); list.add("abc"); list.add("xyz"); list.add("123"); list.add("xyz"); //第一種去重復 ??存進Map中,利用Map的鍵不能重復 /*Map<String, Integer> hMap = new HashMap<String, Integer>(); for (String string : list) { hMap.put(string, 1); } Set<Entry<String, Integer>> eSet = hMap.entrySet(); for (Entry<String, Integer> entry : eSet) { String str?= entry.getKey(); System.out.print(str+"->"); }*/ //第二種去重復 ??雙重循環,一一判斷 // int?size = list.size(); // for (int?i = 0; i < size; i++) { // for (int?j = 1; j < size; j++) { // if (list.get(i).equals(list.get(j))) { // list.remove(i);//如果遍歷到相同元素則刪除下標為i或為j的一個 // } // } // } //第三種去重復 ??創建一個新的集合,存儲所遍歷的元素,如果 //遍歷到的元素與新集合里的元素相同則不存入 ArrayList<String> resList?= new?ArrayList<>(); Iterator<String> iterator?= list.iterator(); //使用迭代器遍歷整個集合 while(iterator.hasNext()) {//判斷集合中是否存在下一個元素 String str?= iterator.next(); if?(!resList.contains(str)) {//如果結果集合中不包含此對象,則存入結果集合 resList.add(str); } } System.out.println(resList); } } ? |
?
5 已知 Student類 ?屬性包括 ??int id,String name
?
????創建 5個Student對象存入 List中
?
Student s1 = new Student(1,"aaa");
Student s2 = new Student(2,"bbb");
Student s3 = new Student(3,"ccc");
Student s4 = new Student(4,"ddd");
Student s5 = new Student(1,"aaa");
?
去掉重復元素:當Student的id和name值都相同時,任務是重復元素
| package?com.henu.jihe; ? import?java.util.ArrayList; import?java.util.HashMap; import?java.util.List; import?java.util.Map; import?java.util.Set; import?java.util.Map.Entry; ? public?class?Demo05 { public?static?void?main(String[] args) { Student s1?= new?Student(1,"aaa"); Student s2?= new?Student(2,"bbb"); Student s3?= new?Student(3,"ccc"); Student s4?= new?Student(4,"ddd"); Student s5?= new?Student(1,"aaa"); List<Student> list?= new?ArrayList<Student>(); list.add(s1); list.add(s2); list.add(s3); list.add(s4); list.add(s5); Map<String, Integer> hMap?= new?HashMap<String, Integer>(); List<Student> resList?= new?ArrayList<>(); String str?= ""; for?(int?i?= 0; i?< list.size(); i++) { Student stu?= list.get(i); str?= stu.getId()+stu.getName(); hMap.put(str, 1); } Set<Entry<String, Integer>> eSet?= hMap.entrySet(); for?(Entry<String, Integer> entry?: eSet) { str?= entry.getKey(); Student stu?= new?Student(); int?id?= Integer.parseInt(str.substring(0,1)); stu.setId(id); String name?= str.substring(1); stu.setName(name); resList.add(stu); } System.out.println(resList); } } ? class?Student{ private?int?id; private?String name; public?Student() { } public?Student(int?id, String name) { this.id?= id; this.name?= name; } ? public?void?setId(int?id) { this.id?= id; } public?void?setName(String name) { this.name?= name; } public?int?getId() { return?id; } public?String getName() { return?name; } @Override public?String toString() { return?"Student [id="?+ id?+ ", name="?+ name?+ "]"; } } |
?
6 String s = "...(...[....]....{...}...)...(...).."; ?判斷括號是否匹配
| package?com.henu.jihe; ? import?java.util.Arrays; import?java.util.Stack; ? public?class?Demo06_03 { ? ????public?static?void?main(String[] args) { ? ????????String s?= "...(...[....]....{...}...)...(...).."; ? ????????String[] str?= s.split("\\.+"); ? ????????System.out.println(Arrays.toString(str)); ? ????????Stack<String> stack?= new?Stack<>(); ????????int?count?= 0; ????????String string?= ""; ? ????????for?(int?i?= 0; i+1 < str.length; i++) { ????????????if?("(".equals(str[i]) || "[".equals(str[i]) || "{".equals(str[i])) { ????????????????stack.push(str[i]); ????????????} ????????????if?(stack.size() != 0) { ????????????????string?= stack.peek(); // ???????????????System.out.println(string); ????????????} ????????????if?("(".equals(string) && ")".equals(str[i+1])) { ????????????????stack.pop(); ????????????????count++; ????????????}else?if?("[".equals(string) && "]".equals(str[i+1])) { ????????????????stack.pop(); ????????????????count++; ????????????}else?if?("{".equals(string) && "}".equals(str[i+1])) { ????????????????stack.pop(); ????????????????count++; ????????????}else?{ ????????????????continue; ????????????} ????????} ????????System.out.println(count); ? ????} ? } ? |
?
總結
以上是生活随笔為你收集整理的JavaSE各阶段练习题----集合-Collection-Set-List的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaSE各阶段练习题----异常
- 下一篇: JavaSE各阶段练习题----Map