Java 集合--List(列表)
ArrayList在内存中的存储方式与数组相似为连续的内存数组,而LinkList的存储方式与链表相似,为不连续的内存存储。
ArrayList与LinkedList的用法相似,以下Arraylist为例:
ArrayList的特点:
1.动态增长,长度不固定
2.在尾部插入或者删除数据非常有效,但在集合中间插入元素会消耗较多资源
3.适合于查找和更新元素
4.ArrayList中的元素可以为null
例程1:
// 用ArrayList存储编程语言的名称,并输出
List list=new ArrayList();
list.add("Java");
list.add("C");
list.add("C++");
list.add("Go");
list.add("swift");
//输出列表中元素的个数
System.out.println("列表中元素的个数为:"+list.size());
//遍历输出所有编程语言
System.out.println("**************************************");
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+",");
}
//移除列表中的C++
System.out.println();
//list.remove(2);
list.remove("C++");
System.out.println("**************************************");
System.out.println("移除C++以后的列表元素为:");
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+",");
}
例程2:
//需要将get()方法返回的类对象强转成需要的目标对象(Notice 类对象),才能访问Notice 中自己定义的方法
System.out.println(i + 1 + ":" + ((Notice) (noticeList.get(i))).getTitle());
// 创建Notice类的对象,生成三条公告
Notice notice1 = new Notice(1, "欢迎来到慕课网!", "管理员", new Date());
Notice notice2 = new Notice(2, "请同学们按时提交作业!", "老师", new Date());
Notice notice3 = new Notice(3, "考勤通知!", "老师", new Date());
// 添加公告
ArrayList noticeList = new ArrayList();
noticeList.add(notice1);
noticeList.add(notice2);
noticeList.add(notice3);
// 显示公告
System.out.println("公告的内容为:");
for (int i = 0; i < noticeList.size(); i++) {
System.out.println(i + 1 + ":" + ((Notice) (noticeList.get(i))).getTitle());
}
System.out.println("**************************************");
// 在第一条公告后面添加一条新公告
Notice notice4 = new Notice(4, "在线编辑器可以使用啦!", "管理员", new Date());
noticeList.add(1, notice4);
// 显示公告
System.out.println("公告的内容为:");
for (int i = 0; i < noticeList.size(); i++) {
//需要将get()方法返回的类对象强转成需要的目标对象
System.out.println(i + 1 + ":" + ((Notice) (noticeList.get(i))).getTitle());
}
System.out.println("**************************************");
// 删除按时提交作业的公告
noticeList.remove(2);
// 显示公告
System.out.println("删除公告后的内容为:");
for (int i = 0; i < noticeList.size(); i++) {
System.out.println(i + 1 + ":" + ((Notice) (noticeList.get(i))).getTitle());
}
//将第二条公告改为:Java在线编辑器可以使用啦!
System.out.println("**************************************");
//修改第二条公告中title的值
notice4.setTitle("Java在线编辑器可以使用啦!");
noticeList.set(1, notice4);
System.out.println("修改后公告的内容为:");
for (int i = 0; i < noticeList.size(); i++) {
System.out.println(i + 1 + ":" + ((Notice) (noticeList.get(i))).getTitle());
}
例题: