韩顺平循序渐进学java 第21讲 集合(未完待续)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了韩顺平循序渐进学java 第21讲 集合(未完待续)相关的知识,希望对你有一定的参考价值。

21.1 引出问题

一个问题?

前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决?

请做一个公司职员薪水管理系统,要求完成如下功能:

1、当有新员工时,将该员工加入到管理系统;

2、可以根据员工号,显示该员工的信息;

3、可以显示所有员工信息;

4、可以修改员工的薪水;

5、当员工离职时,将该员工从管理系统中删除;

6、可以按照薪水从低到高顺序排序;

7、可以统计员工的平均工资、最低和最高工资。

解决之道-链表或集合类:

我们想,如果有这样一种数组,可以动态的改变就好了,java的设计者为我们提供了一系列的集合类。

21.2 集合类分类

图中打红色三角的为常用的需要掌握的几个集合类。

 技术分享

从上面的图可以看出java集合类主要有以下几种:

1List结构的集合类

ArrayList类,LinkedList(链表)类,Vector类,Stack

2Map结构的集合类

HashMap类,Hashtable

3Set结构的集合类

HashSet类,TreeSet

4Queue结构的集合

Queue接口

21.3 List结构的集合类

ArrayList类,LinkedList(链表)类,Vector类,Stack

 

21.3.1 ArrayList

 技术分享

上图为结合代码画出的内存中的运行示意图。

演示代码如下:

技术分享
 1 /**日期:2016-03-07
 2  * 功能:ArrayList演示
 3  */
 4 package test;
 5 //所有集合类都在java.util包中
 6 import java.util.*;
 7 public class Demo2 {
 8 
 9     public static void main(String[] args) {
10         // TODO Auto-generated method stub
11         
12         ArrayList al=new ArrayList();
13         System.out.println("此时al的长度为"+al.size());
14         
15         Clerk clerk1=new Clerk("宋江",50,1000);
16         Clerk clerk2=new Clerk("吴用",45,1200);
17         Clerk clerk3=new Clerk("林冲",35,1500);
18         
19         //添加职员对象
20         //有两种add方法,下面这种方式是将新对象添加到ArrayList的最后
21         //还有一种add方法是,将新对象添加到指定的位置
22         al.add(clerk1);
23         al.add(clerk2);
24         al.add(clerk3);
25         al.add(clerk1); //注意:可以重复添加一个对象
26         System.out.println("此时al的长度为"+al.size());
27         
28         //遍历al,打印出每个职员的名字
29         for(int i=0;i<al.size();i++)
30         {
31             //需要实例化一个临时变量,来完成名字的读取
32             Clerk temp=(Clerk)al.get(i); 
33             System.out.println("第"+i+"个人的名字为:"+temp.getName());
34         }
35         
36         System.out.println("====删除吴用之后====");
37         //删除职员对象
38         al.remove(1);
39         for(int i=0;i<al.size();i++)
40         {
41             Clerk temp=(Clerk)al.get(i);
42             System.out.println("第"+i+"个人的名字为:"+temp.getName());
43         }
44     }
45 
46 }
47 
48 class Clerk
49 {
50     private String name;
51     private int age;
52     private int salary;
53     
54     public String getName() {
55         return name;
56     }
57     public void setName(String name) {
58         this.name = name;
59     }
60     public int getAge() {
61         return age;
62     }
63     public void setAge(int age) {
64         this.age = age;
65     }
66     public int getSalary() {
67         return salary;
68     }
69     public void setSalary(int salary) {
70         this.salary = salary;
71     }
72 
73     public Clerk(String name,int age,int salary)
74     {
75         this.name=name;
76         this.age=age;
77         this.salary=salary;
78     }
79     
80 }
View Code

运行结果如下:

技术分享
 1 此时al的长度为0
 2 此时al的长度为4
 3 第0个人的名字为:宋江
 4 第1个人的名字为:吴用
 5 第2个人的名字为:林冲
 6 第3个人的名字为:宋江
 7 ====删除吴用之后====
 8 第0个人的名字为:宋江
 9 第1个人的名字为:林冲
10 第2个人的名字为:宋江
View Code

 

21.2.2 LinkedList

链表

ArrayList增加了一些方法,比如addFirst(往前面加)、addLast(往后面加)等。

21.2.3 Vector

向量

与ArrayList有区别,随后讲。

21.2.4 Stack

add时是往前面加。

 

以上是关于韩顺平循序渐进学java 第21讲 集合(未完待续)的主要内容,如果未能解决你的问题,请参考以下文章

韩顺平循序渐进学java 第04讲 流程控制

韩顺平循序渐进学java 第03讲 运算符

韩顺平循序渐进学java 第01讲 内容介绍.项目演示.原理剖析

韩顺平循序渐进学java 第26讲 异常 =====基础部分END=====

韩顺平循序渐进学java 第05.06.07讲 类.对象

韩顺平循序渐进学java 第13讲 抽象类.接口