集合框架包含的內容: 集合框架的介面: List介面實現類 ArrayList LinkedList 迭代器Iterator 如何遍歷List集合? 1、通過for迴圈和get()方法配合實現遍歷 2、通過迭代器Iterator實現遍歷 所有集合介面和類都沒有提供相應遍歷的方法,而是由Iterato ...
集合框架包含的內容:
集合框架的介面:
List介面實現類
ArrayList
1 package com.jredu.ch01; 3 import java.util.ArrayList; 5 import java.util.List; 7 public class ArrayListTest { 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub 11 // 創建一個list集合對象 12 // list是有序但不唯一的一組集合數據 13 List list = new ArrayList<>(); 14 // 開始的集合長度為0 15 // list.size() 返回給定集合的長度 16 System.out.println("添加數據前的集合長度" + list.size()); 17 // list.add("aaaa"); 18 // list.add("dddd"); 19 // list.add("cccc"); 20 // list.add("aaaa"); 21 list.add(1); 22 list.add("two"); 23 list.add('c'); // 字元型 24 list.add(true); 25 // list.add(index, element); 26 // 在指定索引處添加了一個元素,但索引位置必須介於0——集合的元素個數之間 27 list.add(1, "啦啦啦"); 28 System.out.println(list); 29 System.out.println("添加數據後的集合長度" + list.size()); 30 // get方法通過傳入指定元素的索引獲取該元素,取出來的類型Object類型 31 // 使用前需要進行類型強制轉換 32 // 索引範圍內是0——集合長度減一 範圍 33 System.out.println(list.get(3));// 因為add添加,要+1得到c 34 } 35 }
1 package com.jredu.ch01; 3 import java.util.ArrayList; 5 public class ArrayListTest2 { 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 ArrayList list = new ArrayList<>(); 10 list.add(1); 11 list.add(2); 12 list.add(3); 13 list.add(2); 14 // contains判斷列表中是否存在該元素 15 if (list.contains(3)) { 16 System.out.println("找到了"); 17 } else { 18 System.out.println("未找到"); 19 } 20 // remove在列表中刪除指定元素,刪除成功返回true,失敗返回false 21 // 如果有多個元素值相同,只刪掉第一個 22 if (list.remove(Integer.valueOf(2))) { // 包裝類 23 System.out.println("刪除成功"); 24 } else { 25 System.out.println("刪除失敗"); 26 } 27 System.out.println(list); 28 // 刪除的是對應下標的那個元素的值 29 // list.remove(1); 30 System.out.println(list.remove(2)); 32 } 34 }
1 package com.jredu.ch03; 3 import java.util.ArrayList; 4 import java.util.Arrays; 6 /** 7 * list擴展:常見的幾個擴展方法11 */ 12 public class ListDemo { 13 public static void main(String[] args) { 14 ArrayList list = new ArrayList<>(); 15 ArrayList list2 = new ArrayList<>(); 16 ArrayList list3 = new ArrayList<>(); 17 list.add(1); 18 list.add(2); 19 list.add(3); 20 list2.add(1); 21 list2.add(2); 22 list2.add(3); 23 // 向集合中添加一個集合 24 list3.addAll(list); 25 list3.addAll(list2); 26 // System.out.println(list); 27 // System.out.println(list2); 28 // System.out.println(list3); 30 ArrayList list4 = new ArrayList<>();// ArrayList list4 =null; 31 list4.add(1); 32 // 判斷集合中是否有元素 33 if (list4 != null && !list4.isEmpty()) { 34 System.out.println("集合中有數據"); 35 } else { 36 System.out.println("集合為空"); 37 } 39 ArrayList list5 = new ArrayList<>(); 40 // Object [] o={1,2,3}; 41 list5.add(1); 42 list5.add(2); 43 list5.add(3); 44 // 數組和集合相互轉換 45 // 集合轉數組 46 Object[] o = list5.toArray(); 47 System.out.println(Arrays.toString(o)); 48 // 數組轉集合 49 ArrayList list6 = new ArrayList<>(); 50 list6.addAll(Arrays.asList(o)); 51 System.out.println(list6); 53 // for(int i=0;i<list.size();i++){ 54 // list2.add(list.get(i)); 55 // } 56 // System.out.println(list2); 57 } 58 }
LinkedList
1 package com.jredu.ch01; 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Random; 6 import java.util.Scanner; 8 public class Random1 { 10 //存儲所有的姓名 11 List list=new ArrayList<>(); 12 //接收控制台信息 13 Scanner in=new Scanner(System.in); 14 //隨機數 15 Random r=new Random(); 17 public void addNames() { 18 //迴圈添加姓名 19 while(true) { 20 //提示信息 21 System.out.print("請輸入姓名"); 22 //接收姓名 23 list.add(in.next()); 24 //提示信息 25 System.out.print("是否繼續添加?(y/n)"); 26 String code=in.next(); 27 if(!code.equals("y")) { 28 break; 29 } 30 } 31 System.out.println(list); 32 } 34 public void getRandomName() { 35 while(true){ 36 //得到隨機數 37 int i=r.nextInt(list.size()); 38 //得到對應的名字 39 System.out.println(list.get(i)); 40 System.out.print("是否繼續點名?(y/n)"); 41 String code=in.next(); 42 //判斷如果不是y,就退出 43 if(!code.equals("y")) { 44 return; 45 } 46 } 47 } 49 public static void main(String[] args) { 50 Random1 test=new Random1(); 51 //添加姓名 52 test.addNames(); 53 //獲得隨機的姓名 54 test.getRandomName(); 55 } 58 }
1 package com.jredu.ch02; 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Scanner; 7 public class StudentManager { 9 ArrayList list = new ArrayList<>(); 10 Scanner sc = new Scanner(System.in); 12 public void addStu() { 13 System.out.println("**********錄入學生信息,當錄入學生的編號為0時結束錄入************"); 14 while (true) { 15 System.out.print("請輸入學員學號:"); 16 int num = sc.nextInt(); 17 Student stu = null; 18 if (num == 0) { 19 System.out.println("結束錄入!"); 20 show(); 21 break; 22 } else { 23 System.out.print("請輸入學員姓名:"); 24 String name = sc.next(); 25 System.out.print("請輸入學員年齡:"); 26 int age = sc.nextInt(); 27 stu = new Student(num, name, age); 28 list.add(stu); 29 } 30 } 32 } 34 public void show() { 35 System.out.println("學員的信息如下:"); 36 System.out.println("學號\t姓名\t年齡"); 37 // Student s = null; 38 // for (int i = 0; i < list.size(); i++) { 39 // s = (Student) list.get(i); 40 // System.out.println(s.getId() + "\t" + s.getName() + "\t" + 41 // s.getAge()); 42 // } 43 for (Object o : list) { 44 Student stu = (Student) o; 45 System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge()); 46 } 48 } 50 public void update() { 51 System.out.print("請輸入需要修改的學員學號:"); 52 int num = sc.nextInt(); 53 for (int i = 0; i < list.size(); i++) { 54 Student stu = (Student) list.get(i); 55 if (stu.getId() == num) { 56 System.out.print("請輸入需要修改的學員姓名:"); 57 stu.setName(sc.next()); 58 System.out.print("請輸入需要修改的學員年齡:"); 59 stu.setAge(sc.nextInt()); 60 System.out.println("修改成功"); 61 // 展示數據 62 show(); 63 return;// 跳出方法 64 } 65 } 66 System.out.println("沒有該學員"); 67 } 69 public void remove() { 70 System.out.print("請輸入要刪除的編號"); 71 int no = sc.nextInt(); 72 for (int i = 0; i < list.size(); i++) { 73 if (no == ((Student) list.get(i)).getId()) { 74 list.remove(i); 75 System.out.println("刪除成功"); 76 show(); 77 return; 78 } 79 } 80 System.out.println("對不起,沒有此學員"); 81 } 83 public static void main(String[] args) { 84 StudentManager sm = new StudentManager(); 85 sm.addStu(); 86 sm.update(); 87 sm.remove(); 88 } 90 }
迭代器Iterator
如何遍歷List集合?
1、通過for迴圈和get()方法配合實現遍歷
2、通過迭代器Iterator實現遍歷
所有集合介面和類都沒有提供相應遍歷的方法,而是由Iterator實現集合遍歷
Collection介面的iterate()方法返回一個Iterator,然後通過Iterator介面的兩個方法可實現遍歷
boolean hasNext():判斷是否存在另一個可訪問的元素
Object next()返回要訪問的下一個元素
1 package com.jredu.ch03; 3 import java.util.Iterator; 4 import java.util.LinkedList; 6 public class IteratorTest { 7 public static void main(String[] args) { 8 LinkedList list=new LinkedList<>(); 9 list.add(1); 10 list.add(2); 11 list.add(3); 12 //獲取集合中的每一個元素 13 //使用迭代 14 Iterator iter=list.iterator(); 15 //判斷是否存在下一個元素 16 while(iter.hasNext()){ 17 //獲取下一個元素 18 System.out.print(iter.next()+" "); 19 } 20 System.out.println("\n***********"); 21 //for迴圈 22 for(int i=0;i<list.size();i++){ 23 System.out.print(list.get(i)+" "); 24 } 25 System.out.println("\n***********"); 26 //foreach迴圈 27 for(Object o:list){ 28 System.out.print(o+" "); 29 } 30 // for(int i=0;i<5;i++){ 31 // list.add(new Student(i,"name"+i,i)); 32 // } 33 // Iterator iter=list.iterator(); 34 // while(iter.hasNext()){ 35 // Student stu=(Student)iter.next(); 36 // System.out.println(stu.getId()); 37 // System.out.println(stu.getName()); 38 // System.out.println(stu.getAge()); 39 // } 40 } 41 }
HashSet
1 package com.jredu.ch03; 2 import java.util.HashSet; 3 import java.util.Iterator; 4 public class SetTest { 5 public static void main(String[] args) { 6 HashSet hs=new HashSet<>(); 7 //唯一 8 // hs.add(1); 9 // hs.add(2); 10 // hs.add(1); 11 // hs.add(true); 12 // hs.add(true); 13 // Dog dog=new Dog("陳", "單身貓"); 14 // Dog dog2=new Dog("周", "單身貓"); 15 // hs.add(dog2); 16 // hs.add(dog); 17 // System.out.println(hs.size()); 18 //無序 19 hs.add(8); 20 hs.add(5); 21 hs.add(3); 22 hs.add(1); 23 Iterator iter=hs.iterator(); 24 while(iter.hasNext()){ 25 int i=(int)iter.next(); 26 System.out.println(i); 27 } 29 } 30 }
HashMap
1 package com.jredu.ch04; 3 import java.util.Collection; 4 import java.util.HashMap; 5 import java.util.Iterator; 6 import java.util.Set; 7 import java.util.Map.Entry; 9 public class Ch01 { 11 public static void main(String[] args) { 12 HashMap map = new HashMap<>(); 13 map.put(1, "哈哈"); 14 map.put(2, "吼吼"); 15 map.put(3, "嗚嗚"); 16 // keySet獲得鍵集合 17 Set set = map.keySet(); 18 Iterator iter = set.iterator(); 19 while (iter.hasNext()) { 20 int i = (int) iter.next(); 21 System.out.println(i); 22 } 23 // values獲得值集合 24 Collection col = map.values(); 25 Iterator iter1 = col.iterator(); 26 while (iter1.hasNext()) { 27 String str = (String) iter1.next(); 28 System.out.println(str); 29 } 30 // entrySet獲得鍵和值的集合 31 Set entrySet = map.entrySet(); 32 Iterator iter2 = entrySet.iterator(); 33 while (iter2.hasNext()) { 34 Entry entry = (Entry) iter2.next(); 36 System.out.println(entry.getKey()); 37 System.out.println(entry.getValue()); 38 } 39 } 41 }
package com.jredu.ch04; public class Goods { private String name; private double price; private int count; public Goods(String name, double price, int count) { super(); this.name = name; this.price = price; this.count = count; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } @Override public String toString() { return "Goods [name=" + name + ", price=" + price + ", count=" + count + "]"; } } package com.jredu.ch04; import java.util.Comparator; /** * 數量比較*/ public class CountComparator implements Comparator{ @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method stub Goods g1=(Goods) o1; Goods g2=(Goods) o2; //按照數量規則進行比較判斷 if(g1.getCount()>=g2.getCount()) { //滿足規則返回1 return 1; } return -1; } } package com.jredu.ch04; import java.util.ArrayList; import java.util.Collections; public class GoodsManager { ArrayList list=new ArrayList<>(); public static final int PRICE=1; public static final int COUNT=2; public GoodsManager() { list.add(new Goods("手機", 999, 2)); list.add(new Goods("電視", 4000, 5)); list.add(new Goods("筆記本電腦", 6000, 10)); list.add(new Goods("滑鼠", 50, 30)); list.add(new Goods("鍵盤", 40, 7)); } public void sort(int type) { //價格排序/數量排序 switch (type) { case PRICE: Collections.sort(list,new PriceComparator()); // Collections.reverse(list); show(); break; case COUNT: // Collections.sort(list,new CountComparator()); // Collections.reverse(list); show(); break; } } public void show() { System.out.println(list); } public static void main(String[] args) { GoodsManager gm=new GoodsManager(); gm.sort(GoodsManager.PRICE); // gm.sort(GoodsManager.COUNT); } }