LinkedList集合类

本文介绍了如何使用LinkedList存储和操作新闻标题。通过创建LinkedList对象并添加、插入、获取及删除元素,展示了LinkedList在新闻管理系统中的高效性能,特别是在插入和删除操作上。同时,对比了LinkedList与ArrayList的区别,强调了LinkedList在链表存储方式下对于频繁插入和删除的优势。
摘要由CSDN通过智能技术生成

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采用链表存储方式,插入、删除元素时效率比较高。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值