韩顺平循序渐进学java 第21讲 集合(未完待续)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了韩顺平循序渐进学java 第21讲 集合(未完待续)相关的知识,希望对你有一定的参考价值。
21.1 引出问题
一个问题?
前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决?
请做一个公司职员薪水管理系统,要求完成如下功能:
1、当有新员工时,将该员工加入到管理系统;
2、可以根据员工号,显示该员工的信息;
3、可以显示所有员工信息;
4、可以修改员工的薪水;
5、当员工离职时,将该员工从管理系统中删除;
6、可以按照薪水从低到高顺序排序;
7、可以统计员工的平均工资、最低和最高工资。
解决之道-链表或集合类:
我们想,如果有这样一种数组,可以动态的改变就好了,java的设计者为我们提供了一系列的集合类。
21.2 集合类分类
图中打红色三角的为常用的需要掌握的几个集合类。
从上面的图可以看出java集合类主要有以下几种:
1、List结构的集合类
ArrayList类,LinkedList(链表)类,Vector类,Stack类
2、Map结构的集合类
HashMap类,Hashtable类
3、Set结构的集合类
HashSet类,TreeSet类
4、Queue结构的集合
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 }
运行结果如下:
1 此时al的长度为0 2 此时al的长度为4 3 第0个人的名字为:宋江 4 第1个人的名字为:吴用 5 第2个人的名字为:林冲 6 第3个人的名字为:宋江 7 ====删除吴用之后==== 8 第0个人的名字为:宋江 9 第1个人的名字为:林冲 10 第2个人的名字为:宋江
21.2.2 LinkedList
链表
比ArrayList增加了一些方法,比如addFirst(往前面加)、addLast(往后面加)等。
21.2.3 Vector
向量
与ArrayList有区别,随后讲。
21.2.4 Stack
栈
add时是往前面加。
以上是关于韩顺平循序渐进学java 第21讲 集合(未完待续)的主要内容,如果未能解决你的问题,请参考以下文章
韩顺平循序渐进学java 第01讲 内容介绍.项目演示.原理剖析