首页 > 代码库 > 集合框架

集合框架

集合框架包含的内容:

技术分享

集合框架的接口:

技术分享

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);
    }
}

 

集合框架