集合框架包含的内容:
集合框架的接口:
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); } }