结合框架的体系结构:
一、List(列表)
1. List的特点
(1)List是元素有序并且可以重复的集合,称为序列
(2)List可以精确的控制每个元素的插入位置,或删除某个位置的元素
(3)List的两个主要实现类是ArrayList和LinkList
2. ArrayList的特点
(1)ArrayList底层是由数组实现的
(2)动态增长,以满足应用程序的需求
(3)在列比饿哦尾部插入或删除数据非常有效
(4)更适合查找和更新元素
(5)ArrayList中的元素可以为null
在ArrayList中存储并操作字符串信息
例一需求:用ArrayList存储编程语言的名称并输出,名称报告Java,C,C++,Go,Swift
package com.mpp.set; import java.util.ArrayList; import java.util.List; public class ListDemo1 { public static void main(String[] args) { List list = new ArrayList(); list.add("java"); list.add("python"); list.add("c"); list.add("swift"); //输出list中的元素个数 System.out.println(list.size()); //遍历输出所有变成语言 for(int i=0;i<list.size();i++){ System.out.print(list.get(i)+" "); } System.out.println(); //移除Python // list.remove(1); //根据indexof移除 list.remove("python"); //根据元素内容移除 for(int i=0;i<list.size();i++){ System.out.print(list.get(i)+" "); } } }
在ArrayList中添加自定义的类的对象
例二需求:公告管理,公告的添加和显示,在指定位置处插入公告,删除公告,修改公告
公告类属性:编号id,标题title,创建人creator,创建时间createTime
公告类方法:构造方法,获取和设置属性值的方法(get/set方法)
公告类的代码:
package com.mpp.set; import java.util.Date; public class Notice { //属性:id,title,crator,creatTime private int id; private String title; private String creator; private Date createTime; public Notice(){} //无参构造 //带参构造 public Notice(int id,String title,String creator,Date createTime){ super(); this.id = id; this.title = title; this.creator = creator; this.createTime = createTime; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getCreator() { return creator; } public void setCreator(String creator) { this.creator = creator; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } }
公告管理类的代码:package com.mpp.set;
package com.mpp.set; import com.sun.tools.corba.se.idl.constExpr.Not; import java.util.ArrayList; import java.util.Date; public class NoticeTest { public static void main(String[] args) { //创建notice的对象,生成三条公告 Notice no1 = new Notice(1,"hello word!","admin",new Date()); Notice no2 = new Notice(2,"交作业!","teacher",new Date()); Notice no3 = new Notice(3,"考勤通知","teacher",new Date()); //添加公告 ArrayList noList = new ArrayList(); noList.add(no1); noList.add(no2); noList.add(no3); //显示公告 System.out.println("公告的内容为:"); for(int i=0;i<noList.size();i++){ Notice notice = (Notice)(noList.get(i)); System.out.println(i+1+":"+notice.getTitle()); } System.out.println("************************"); //在第一条公告后面添加一条新公告 Notice no4 = new Notice(4,"在线编辑器可以使用了","admin",new Date()); noList.add(1,no4); System.out.println("公告的内容为:"); for(int i=0;i<noList.size();i++){ Notice notice = (Notice)(noList.get(i)); System.out.println(i+1+":"+notice.getTitle()); } System.out.println("************************"); //删除公告 noList.remove(2); System.out.println("公告的内容为:"); for(int i=0;i<noList.size();i++){ Notice notice = (Notice)(noList.get(i)); System.out.println(i+1+":"+notice.getTitle()); } System.out.println("************************"); //修改公告 no4.setTitle("修改title:python在线编译器可以使用了"); noList.set(1,no4); //我发现有没有这一行都不影响修改后的list的显示 System.out.println("公告的内容为:"); for(int i=0;i<noList.size();i++){ Notice notice = (Notice)(noList.get(i)); System.out.println(i+1+":"+notice.getTitle()); } } }