LinkedList的独有方法
例题
新闻管理系统,需求如下:
可以添加头条新闻标题
获取头条和最末条新闻标题
可以删除末条新闻标题
思路:存储方式选择:元素不确定(使用集合类)
需要在列表的头或尾添加、删除元素
确定存储方式:LinkedList类是List接口的一个具体实现类
LinkedList类用于创建链表数据结构
插入或者删除元素时,它提供更好的性能
具体实现:1.如何把新闻标题存入LinkedList add方法
2.如何获取LinkedList的长度 size方法
3.获取LinkedList里的元素 get方法
/对新闻标题的存储及操作(LinkedList) public class NewsMgr { public static void main(String[] args) { //创建新闻标题对象 NewsTitle title1 = new NewsTitle(1, "北京热门景点故宫1", "author"); NewsTitle title2 = new NewsTitle(2, "北京热门景点长城2", "author"); NewsTitle title3 = new NewsTitle(3, "北京热门景点北海3", "author"); NewsTitle title4 = new NewsTitle(4, "北京热门景点颐和园4", "author"); NewsTitle title5 = new NewsTitle(5, "北京热门景点天安门5", "author"); //创建集合对象,并且将新闻标题加入到集合中 //是否可以用父类引用指向子类对象的形式? // List list = new LinkedList();这种写法只能调用父子类共用的方法,无法调用子类独有的方法 LinkedList list = new LinkedList(); //依次在列表末尾添加元素 list.add(title1); list.add(title2); list.add(title3); list.add(title4); //在指定位置插入某个特定元素 list.add(1, title5); //插入头条新闻标题 NewsTitle title6=new NewsTitle(6,"北京热门景点国家博物馆6","author"); //在列表首部添加元素 list.addFirst(title6); //获取新闻标题的总数 System.out.println("新闻标题一共有" + list.size() + "条"); //逐条打印新闻标题的名称 System.out.println("****************************"); //方法一:逐条遍历LinkedList元素的位置(下标) for (int i = 0; i < list.size(); i++) { NewsTitle title = (NewsTitle) list.get(i);//等同于list[i],请注意,返回值为Object,要进行强制数据类型转换 System.out.println(title.getTitle() + title.getAuthor()); } //方法二:增强型for System.out.println("****************************"); for (Object obj : list) { NewsTitle title = (NewsTitle) obj; System.out.println(title.getTitle() + "-" + title.getAuthor()); } //获取头条和最末条新闻标题 System.out.println("****************************"); NewsTitle titleFirst=(NewsTitle)list.getFirst(); System.out.println("头条新闻信息:"+titleFirst.getTitle()+"-"+titleFirst.getAuthor()); NewsTitle titleLast=(NewsTitle)list.getLast(); System.out.println("最末条新闻信息:"+titleLast.getTitle()+"-"+titleLast.getAuthor()); //删除最末条新闻标题 list.removeLast(); System.out.println("****************************"); System.out.println("删除后的新闻标题一共有"+list.size()+"条"); for (Object obj : list) { NewsTitle title = (NewsTitle) obj; System.out.println(title.getTitle() + "-" + title.getAuthor()); } }
LinkedList与ArrayList-相同点:同为List的实现类,元素有序,不唯一、长度可变
共有Collection及Listde 通用方法
LinkedList与ArrayList-不同点:ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历 元素和随机访问元素的效率比较高
LinkList采用链表存储方式,插入、删除元素时效率比较高。