List接口:存储一组不唯一,有序(插入顺序)的对象。
ArrayList类是类List接口的一个具体实现类。
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率较高。
下面是针对ArrayList常用方法的一个简单应用:
1、首先是一个新闻实体类,属性有:id,标题,作者,然后就是setter,getter方法和一个无参一个有3个参数的构造方法,还有一个toString方法,用于输出有关信息。
package day12;
/**
* 新闻实体类
*/
public class News {
//id
private String id;
//标题
private String title;
//作者
private String author;
public News() {
super();
}
public News(String id, String title, String author) {
super();
this.id = id;
this.title = title;
this.author = author;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "News [id=" + id + ", title=" + title + ", author=" + author + "]";
}
}
2、为了实现封装这里的第2个类是NewsService 类,包含了3个方法,方法的主要作用是:新增新闻、获取新闻总数、打印所有的新闻标题。
package day12;
import java.util.Iterator;
import java.util.List;
/**
* 新闻service类
*
*/
public class NewsService {
/**
* 新增
* @param newsList 新闻列表
* @param news 要增加的新闻
*/
public void add(List newsList,News news) {
newsList.add(news);
System.out.println("新增成功");
}
/**
* 获取新闻总数
* @param newsList 新闻列表
* @param int 返回总数
*/
public int getTotal(List list) {
return list.size();
}
/**
* 打印所有的新闻标题
* @param list 新闻列表
*/
public void printTitle(List<News> list) {
//如果列表为空,则不打印
if(list==null || list.size()==0) {
return ;
}
System.out.println();
//方法一:增强for循环
for(News news :list) {
if(news == null) {
continue;
}
System.out.println(news.getTitle());
}
System.out.println();
//方法二:迭代器遍历
Iterator<News> iter = list.iterator();
News news = null;
while(iter.hasNext()) {
news = iter.next();
if(news == null) {
continue;
}
System.out.println(news.getTitle());
}
System.out.println();
//方法三:普通遍历
for(int i=0;i<list.size();i++) {
if(list.get(i)==null) {
continue;
}
System.out.println(list.get(i).getTitle());
}
System.out.println();
}
}
3、测试类
package day12;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<News> list = new ArrayList<News>(); //创建一个ArrayList类的对象(类型是News)
NewsService service = new NewsService(); //创建NewsService对象,为了使用NewsService类中的方法
News new1 = new News("001","高考分数线陆续公布","alice");
News new2 = new News("002","共享单车莫成共享押金","lilei");
list.add(new1); //在列表的末尾顺序添加元素
list.add(new1);
list.add(0,new2); //在下标为0的位置添加元素
list.add(new News("005","一个人,一辈子","韩梅梅")); //添加元素
service.add(list, new News("008","一座名城背后的故事","大勋"));
System.out.println("当前新闻总数为:"+list.size()); //用的是ArrayList原本就有的方法
System.out.println("当前新闻总数为:"+service.getTotal(list));; //调用NewsService的方法,获得新闻总数
System.out.println("下标为1处的新闻的详细信息:"+list.get(1)); //ArrayList的常用方法get(index),获取指定下标位置的信息
News new3 = new News("002","共享单车莫成共享押金","lilei");
System.out.println("是否包含?"+list.contains(new3)); //false //new3是新创建的一个对象
System.out.println("\n当前存在的新闻标题如下:");
service.printTitle(list);
list.remove(1);
System.out.println("删除下标为1的新闻");
list.remove(new2);
System.out.println("删除new2这条新闻\n");
System.out.println("\n当前存在的新闻标题如下:");
service.printTitle(list);
System.out.println("当前新闻总数为:"+service.getTotal(list));
}
}
新增成功
当前新闻总数为:5
当前新闻总数为:5
下标为1处的新闻的详细信息:News [id=001, title=高考分数线陆续公布, author=alice]
是否包含?false
当前存在的新闻标题如下:
共享单车莫成共享押金
高考分数线陆续公布
高考分数线陆续公布
一个人,一辈子
一座名城背后的故事
共享单车莫成共享押金
高考分数线陆续公布
高考分数线陆续公布
一个人,一辈子
一座名城背后的故事
共享单车莫成共享押金
高考分数线陆续公布
高考分数线陆续公布
一个人,一辈子
一座名城背后的故事
删除下标为1的新闻
删除new2这条新闻
当前存在的新闻标题如下:
高考分数线陆续公布
一个人,一辈子
一座名城背后的故事
高考分数线陆续公布
一个人,一辈子
一座名城背后的故事
高考分数线陆续公布
一个人,一辈子
一座名城背后的故事
当前新闻总数为:3