集合

1、集合是与数组类似,也是一种容器,用于装数据的。

2、集合的大小不固定启动后可以动态变化,类型也可以选择不固定。

3、集合非常适合做元素个数不确定,且要进行增删操作的业务场景。

4、集合的提供了许多丰富,而数组的功能很单一。

 

ArrayList集合

1、创建

        //1、创建
        ArrayList list = new ArrayList();

2、添加数据

        //2、添加数据
        list.add("");
        list.add("");
        list.add("同学");
        list.add(22);

        //会有一个返回值,ArrayList一般不会添加失败
        System.out.println(list.add(""));//ture

        System.out.println(list);

 

泛型概述

ArrayList<E> 就是一个泛型类,可以再编译阶段约束集合对象只能操作某种数据类型。

 

例:

ArrayList<String>: 这个集合只能操作字符串类型的元素。

ArrayList<Integer>: 这个集合只能操作整数类型的元素。

                                  注意不能写Int,只能写Integer!

ArrayList<Object>: 支持所有类型。

 

ArrayList的常用API

 

1、获取选定的索引

        Object e = list.get(2);
        System.out.println(e);

 

2、获取集合的大小

System.out.println(list.size());

 

3、集合的遍历

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));

        }

 

4、删除某个索引值得元素,并返回被删除的元素

        System.out.println(list.remove(0));
        System.out.println(list);

 

5、直接删除元素值,删除成功返回ture,失败返回false

        System.out.println(list.remove("同学"));
        System.out.println(list);

 

6、修改某个索引的元素

        list.set(1, "陈");
        System.out.println(list);

 

 

原码:

 1 public class Demo1 {
 2     public static void main(String[] args) {
 3         //1、创建
 4         ArrayList list = new ArrayList();
 5 
 6         //2、添加数据
 7         list.add("小");
 8         list.add("王");
 9         list.add("同学");
10         list.add(22);
11 
12         //会有一个返回值,ArrayList一般不会添加失败
13         System.out.println(list.add("王"));//ture
14 
15         System.out.println(list);
16 
17         //3、指定索引插入
18         list.add(0, "大");
19         System.out.println(list);
20 
21 
22         //API
23         //获取选定的那个
24         Object e = list.get(2);
25         System.out.println(e);
26         System.out.println("------------------");
27 
28         //获取集合的大小
29         System.out.println(list.size());
30         System.out.println("------------------");
31 
32         //集合的遍历
33         for (int i = 0; i < list.size(); i++) {
34             System.out.println(list.get(i));
35 
36         }
37         System.out.println("------------------");
38 
39         //删除某个索引值处的元素,并返回被删除的元素
40         System.out.println(list.remove(0));
41         System.out.println(list);
42         System.out.println("------------------");
43 
44         //直接删除元素值,删除成功返回ture,失败返回false
45         System.out.println(list.remove("同学"));
46         System.out.println(list);
47         System.out.println("------------------");
48 
49         //修改某个索引的元素
50         list.set(1, "陈");
51         System.out.println(list);
52     }
53 }

 

案例:

1、集合中删除元素

 1 public class Delete {
 2     public static void main(String[] args) {
 3 
 4         //删除80以下的
 5         ArrayList<Integer> scores = new ArrayList<>();
 6         scores.add(98);
 7         scores.add(77);
 8         scores.add(66);
 9         scores.add(89);
10         scores.add(79);
11         scores.add(50);
12         scores.add(100);
13 
14         //方案一
15         //遍历
16         for (int i = 0; i < scores.size(); i++) {
17             int score = scores.get(i);
18 
19             //i--是保证删除过后,回到这个位置,这样就不会跳过数据
20             if (score < 80){
21                 scores.remove(i);
22                 i--;
23             }
24         }
25         System.out.println(scores);
26         System.out.println("-----------------------------");
27 
28         //方案二
29         ArrayList<Integer> scores2 = new ArrayList<>();
30         scores2.add(90);
31         scores2.add(88);
32         scores2.add(50);
33         scores2.add(80);
34         scores2.add(87);
35         scores2.add(89);
36         scores2.add(45);
37         scores2.add(99);
38 
39         //倒序遍历
40         for (int j = scores2.size() - 1; j >= 0; j--) {
41             int score2 = scores2.get(j);
42 
43             if (score2 < 80){
44                 scores2.remove(j);
45             }
46         }
47         System.out.println(scores2);
48     }
49 }

 

存对象

 1 /**
 2  * 理解ArrayList集合存储自定义类型的对象
 3  */
 4 
 5 class Movie{
 6     private  String name;
 7     private Double score;
 8     private String ator;
 9 
10     public Movie(String name, Double score, String ator) {
11         this.name = name;
12         this.score = score;
13         this.ator = ator;
14     }
15 
16     public String getName() {
17         return name;
18     }
19 
20     public void setName(String name) {
21         this.name = name;
22     }
23 
24     public Double getScore() {
25         return score;
26     }
27 
28     public void setScore(Double score) {
29         this.score = score;
30     }
31 
32     public String getAtor() {
33         return ator;
34     }
35 
36     public void setAtor(String ator) {
37         this.ator = ator;
38     }
39 }
40 
41 public class MovieTest {
42     public static void main(String[] args) {
43         //创建对象
44         Movie m1 = new Movie("《肖生克的救赎》", 9.7, "罗宾斯");
45         Movie m2 = new Movie("《霸王别姬》", 9.7, "张国荣");
46         Movie m3 = new Movie("《阿甘正传》", 9.7, "汤姆");
47 
48         //类型是Movie
49         ArrayList<Movie> movies = new ArrayList<Movie>();
50 
51         //添加对象到集合中
52         movies.add(m1);
53         movies.add(m2);
54         movies.add(m3);
55 
56         //遍历
57         for (int i = 0; i < movies.size(); i++) {
58             Movie m = movies.get(i);
59 
60             //输出
61             System.out.println("电影名:" + m.getName());
62             System.out.println("电影评分:"+m.getScore());
63             System.out.println("电影主演:"+m.getAtor());
64             System.out.println("--------------------------");
65         }
66 
67     }
68 }

 

元素搜索:

  1 /**
  2  * 案例:学生信息系统,展示数据,并按照学号完成搜索
  3  */
  4 
  5 class Student{
  6     private String id;
  7     private String name;
  8     private int age;
  9     private String className;
 10 
 11     public Student() {
 12     }
 13 
 14     public Student(String id, String name, int age, String className) {
 15         this.id = id;
 16         this.name = name;
 17         this.age = age;
 18         this.className = className;
 19     }
 20 
 21     public String getId() {
 22         return id;
 23     }
 24 
 25     public void setId(String id) {
 26         this.id = id;
 27     }
 28 
 29     public String getName() {
 30         return name;
 31     }
 32 
 33     public void setName(String name) {
 34         this.name = name;
 35     }
 36 
 37     public int getAge() {
 38         return age;
 39     }
 40 
 41     public void setAge(int age) {
 42         this.age = age;
 43     }
 44 
 45     public String getClassName() {
 46         return className;
 47     }
 48 
 49     public void setClassName(String className) {
 50         this.className = className;
 51     }
 52 
 53 
 54 
 55     /**
 56      * 类比: ArrayList<Student>是类型
 57      * 根据学生的学号查询学生对象返回
 58      *
 59      * @param students1     //存储全部学生对象的集合
 60      * @param id1           //搜索的学生和学号
 61      * @return              //学生对象或者null
 62      */
 63     public static Student getStudentById(ArrayList<Student> students1, String id1){
 64         //遍历全部学生对象
 65         for (int i = 0; i < students1.size(); i++) {
 66             Student s = students1.get(i);
 67 
 68             //询问当前遍历的这个学生对象的学号,是否是我们要找的学号
 69             if (s.getId().equals(id1)){
 70                 //这个s代表的学生对象,就是我们要找的,返回它
 71                 return s;
 72             }
 73         }
 74         return null;
 75     }
 76 }
 77 
 78 public class Search {
 79     public static void main(String[] args) {
 80 
 81         //创建集合存储学生对象,创建学生对象封装学生信息
 82         ArrayList<Student> students = new ArrayList<Student>();
 83 
 84         students.add(new Student("2019001", "小张", 22, "大数据"));
 85         students.add(new Student("2019002", "小李", 21, "软件"));
 86         students.add(new Student("2019003", "小何", 23, "数科"));
 87 
 88         //  \t缩进
 89         System.out.println("学号\t\t姓名\t年龄\t专业");
 90 
 91         //遍历
 92         for (int i = 0; i < students.size(); i++) {
 93             //定义一个变量,接集合中的数据
 94             Student s = students.get(i);
 95             System.out.println(s.getId() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());
 96 
 97         }
 98 
 99         //定义方法完成按照学号的搜索功能
100         Scanner sc = new Scanner(System.in);
101         while (true){
102             System.out.println("请输入学号:");
103             //接输入的学号,是String类型
104             String id1 = sc.next();
105            //调用方法查询
106             Student s1 = Student.getStudentById(students, id1);
107             //判断s中是否存在学生对象地址
108             if (s1 == null){
109                 System.out.println("你输入的学号不正确!");
110             }else {
111                 System.out.println("该学号学生信息如下:");
112                 System.out.println(s1.getId() + "\t" + s1.getName() + "\t" + s1.getAge() + "\t" + s1.getClassName());
113             }
114         }
115     }
116 }

 

posted @ 2022-03-28 10:48  小王同学学编程  阅读(30)  评论(0)    收藏  举报
levels of contents