有关Java LinkedList问题
        LinkedList<String> list = new LinkedList<String>();

        list.addLast("2");
        list.add("3");
        list.addFirst("1");

        System.err.println(list.getFirst());
        System.err.println(list.getLast()); 

        1
        3

为什么结果是1、3呢?
不是1、2呢?
那还要addLast有什么用呢?

10个回答

区别:add返回boolean,addLast不返回值
共同:都是调用linkLast方法,往最后添加元素。
public void addLast(E e) {
linkLast(e);
}
public boolean add(E e) {
linkLast(e);
return true;
}

/**
     * Appends the specified element to the end of this list.
     *
     * <p>This method is equivalent to {@link #addLast}.
     *
     * @param e element to be appended to this list
     * @return {@code true} (as specified by {@link Collection#add})
     */
        public boolean add(E e) {
        linkLast(e);
        return true;
    }

按照官方注释中所述,add和addLast方法两者等价,但是由于LinkedList实现了Collection接口,不得不实现add方法,其实可以不要。

add("3")的时候,把3加在2的后面,然后addFirst把1加载头
所以第一个是1,最后一个是3

list.addLast("2"); //由于集合里一个都没有,成功后集合为["2"]
list.add("3");//默认加到末尾,成功和集合为["2","3"]
list.addFirst("1");加到最开始,成功和集合为["1","2","3"]

你们都没看懂楼主的意思,
楼主的意思是既然 有addLast,他就应该在最后一位,不管你后面的值怎么添加, 按你们说的addLast跟add还有什么区别

很明显,首先你用addLast添加的2,此时集合最后一个确实是2。但是你后面又写了一个add来添加的3,且是在2后面添加的3,那么此时最后一个元素就是3了,所以你getLast得到的是3。而你使用addFirst是在集合第一位添加,所以不论你怎么添加,第一位元素都是你通过addFirst加进去的元素。

第一次添加的时候,集合是空的,addLast之后是里边有一个2了。。然后在add之后,2后边加了个3,之后在开始加1.。。这样话就是[1,2,3]的集合

addLast是添加到当前集合的最末尾,并不是永远都是末尾。ipple1986都已经贴出源码了,除了返回值类型,add和addLast就是没区别。

add()是List接口的方法;addLast()是LinkedList类的方法(List接口中没有);LinkedList是List接口的实现类,所以LinkedList就具有add()的方法了。如果你用多态创建对象(List list = new LinkedList());此对象(list)就没有addLast()方法了。

就考虑list中有没有东西就好了,确实,没有元素时add()和addlast()作用是一样的,有元素时就加到所有元素后面嘛,不难理解

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java中linkedlist的clone返回此 LinkedList 的浅表副本。

java中linkedlist的clone返回此 LinkedList 的浅表副本。(这些元素本身没有复制),求个实例

为什么java.util里的Stack不用LinkedList实现

thinking in java用LinkedList实现了stack,而且说比java.util 里自带的stack更好,那么为什么java.util里的stack不用LinkedList实现呢?

在 Java 中什么时候使用 LinkedList 而不是 ArrayList?

<div class="post-text" itemprop="text"> <p>I've always been one to simply use:</p> <pre><code>List&lt;String&gt; names = new ArrayList&lt;&gt;(); </code></pre> <p>I use the interface as the type name for <em>portability</em>, so that when I ask questions such as these I can rework my code. </p> <p>When should <a href="https://docs.oracle.com/javase/9/docs/api/java/util/LinkedList.html" rel="noreferrer"><code>LinkedList</code></a> be used over <a href="https://docs.oracle.com/javase/9/docs/api/java/util/ArrayList.html" rel="noreferrer"><code>ArrayList</code></a> and vice-versa?</p> </div> <p>转载于:https://stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist-in-java</p>

java 集合 linkedList的问题 望大神解惑

hashmap和 arraylist都可以设置初始化大小 比如List arrayList = new arrayList(100); linkedlist不可以设置初始化大小么

LinkedList类中的三个属性序列化问题

在看linkedList源码的时候,发现LinkedList实现了Serializable接口,但是它所有的(共三个)属性,size,first,last都加了transient 关键字. ![图片说明](https://img-ask.csdn.net/upload/201902/26/1551146515_136172.png) 于是我就写了一个序列化反序列化代码来序列化linkedlist试一下 结果发现反序列化后的linkedlist对应属性仍有值 ![图片说明](https://img-ask.csdn.net/upload/201902/26/1551146642_152346.png) 我想问一下大神们transient 关键字为什么在这里没有作用,求解

java 使用LinkedList 实现多项式的相加相乘

1定义类Term这个类将定义多项式的项。它应该有两个属性,系数和项的指数。 2.要使用LinkedList 3.使用toString 输出 4.使用scanner 输入输出

LinkedList在调试的时候有数据,最终输出的时候变成一个空list集合。

# 直接上代码 ``` package com.joyintech.abs.service.impl.assets; import java.util.ArrayList; import java.util.List; import com.joyintech.abs.service.impl.assets.ExcelEventParser.SimpleSheetContentsHandler; public class Test { public static void main(String[] args) throws Throwable{ long start = System.currentTimeMillis(); final List<List<String>> table = new ArrayList<>(); final List<List<String>> table1 = new ArrayList<>(); final List<List<String>> table2 = new ArrayList<>(); new ExcelEventParser("D:/ExcelTestModel.xlsx").setHandler(new SimpleSheetContentsHandler(){ private List<String> fields; @Override public void endRow(int rowNum) { if(rowNum == 0){ // 第二行字段名 fields = row; }else { // 数据 if(rowNum<20){ table.add(row); }else if(rowNum>=20 && 800000>rowNum){ table1.add(row); }else{ table2.add(row); } } } }).parse(); long end = System.currentTimeMillis(); System.err.println(table.size()); System.err.println(table1.size()); System.err.println(table2.size()); System.err.println(end - start); } } ``` ``` package com.joyintech.abs.service.impl.assets; import java.io.IOException; import java.io.InputStream; import java.util.LinkedList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackageAccess; import org.apache.poi.util.SAXHelper; import org.apache.poi.xssf.eventusermodel.ReadOnlySharedStringsTable; import org.apache.poi.xssf.eventusermodel.XSSFReader; import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler; import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler.SheetContentsHandler; import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.usermodel.XSSFComment; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; public class ExcelEventParser { private String filename; private SheetContentsHandler handler; public ExcelEventParser(String filename){ this.filename = filename; } public ExcelEventParser setHandler(SheetContentsHandler handler) { this.handler = handler; return this; } public void parse(){ OPCPackage pkg = null; InputStream sheetInputStream = null; try { pkg = OPCPackage.open(filename, PackageAccess.READ); XSSFReader xssfReader = new XSSFReader(pkg); StylesTable styles = xssfReader.getStylesTable(); ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(pkg); sheetInputStream = xssfReader.getSheetsData().next(); processSheet(styles, strings, sheetInputStream); } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); }finally { if(sheetInputStream != null){ try { sheetInputStream.close(); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } } if(pkg != null){ try { pkg.close(); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } } } } private void processSheet(StylesTable styles, ReadOnlySharedStringsTable strings, InputStream sheetInputStream) throws SAXException, ParserConfigurationException, IOException{ XMLReader sheetParser = SAXHelper.newXMLReader(); if(handler != null){ sheetParser.setContentHandler(new XSSFSheetXMLHandler(styles, strings, handler, false)); }else{ sheetParser.setContentHandler(new XSSFSheetXMLHandler(styles, strings, new SimpleSheetContentsHandler(), false)); } sheetParser.parse(new InputSource(sheetInputStream)); } public static class SimpleSheetContentsHandler implements SheetContentsHandler{ protected List<String> row = new LinkedList<>(); @Override public void startRow(int rowNum) { row.clear(); } @Override public void endRow(int rowNum) { System.err.println(rowNum + " : " + row); } @Override public void cell(String cellReference, String formattedValue, XSSFComment comment) { row.add(formattedValue); } @Override public void headerFooter(String text, boolean isHeader, String tagName) { } } } ``` # 调试时的数据 ![图片说明](https://img-ask.csdn.net/upload/201912/10/1575940805_574305.png) # 最终结果 ![图片说明](https://img-ask.csdn.net/upload/201912/10/1575940966_327148.png)

java 集合ArrayList 和 linkedlist问题

是不是后台从数据库获取数据用ArrayList 从后台保存数据到数据库用linkedlist啊

java 作业nullpointer 问题

有一个 java 的作业,要求写一个 linkedlist,然后在自己写的 linkedlist 基础上写段把阿拉伯数字转化成罗马数字的code。以下是我的 code: public RomanNumeral (int number) { intRepresentation = number; int tempnum = number; int tempmod = 0; for (int i = 0; i < 13; i++) { if (tempnum >= intvals[i]) { nums[i] = tempnum / intvals[i]; tempmod = tempnum % intvals[i]; if (tempmod == 0) { break; } tempnum = tempmod; } } for (int j = 0; j < 5; j++) { for (int k = 0; k < nums[j]; k++) { if (roman[j] == ' ') { list.addLast('C'); list.addLast(roman[j - 1]); } else { list.addLast(roman[j]); } } } for (int m = 5; m < 9; m++) { for (int n = 0; n < nums[m]; n++) { if (roman[m] == ' ') { list.addLast('X'); list.addLast(roman[m - 1]); } else { list.addLast(roman[m]); } } } for (int p = 9; p < 13; p++) { for (int l = 0; l < nums[p]; l++) { if (roman[p] == ' ') { list.addLast('I'); list.addLast(roman[p - 1]); } else { list.addLast(roman[p]); } } } } public int getInt () { return intRepresentation; } public RomanNumeral next () { return new RomanNumeral(intRepresentation + 1); } public RomanNumeral previous() { return new RomanNumeral(intRepresentation - 1); } public String toString() { StringBuilder sb = new StringBuilder(); for (Character i : list) { sb.append(i); } return new String(sb); } } 不知道为什么在用另一个 driver 程序运行它的时候总是在第一次出现 addlast 的时候就报错 nullpointer。换成我自己写的 linkedlist 里面的其他方法比如 addfirst ,isEmpty什么的也一样是 nullpointer。现在基本排除是 linkedlist 那一部分的问题,又看不出来这段 code 有什么问题。 求前辈指点!!!

请问怎么使用LinkedList?

将对象添加到LinkedList中,如何输出添加的对象的个数?

什么时候在 Java 中使用 LinkedList 而不是 ArrayList?

<div class="post-text" itemprop="text"> <p>I've always been one to simply use:</p> <pre><code>List&lt;String&gt; names = new ArrayList&lt;&gt;(); </code></pre> <p>I use the interface as the type name for <em>portability</em>, so that when I ask questions such as these I can rework my code. </p> <p>When should <a href="https://docs.oracle.com/javase/9/docs/api/java/util/LinkedList.html" rel="noreferrer"><code>LinkedList</code></a> be used over <a href="https://docs.oracle.com/javase/9/docs/api/java/util/ArrayList.html" rel="noreferrer"><code>ArrayList</code></a> and vice-versa?</p> </div> <p>转载于:https://stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist-in-java</p>

LinkedList中peek()和element()有什么区别?

下面是源代码: public E peek() { final Node<E> f = first; return (f == null) ? null : f.item; } public E element() { return getFirst(); } public E getFirst() { final Node<E> f = first; if (f == null) throw new NoSuchElementException(); return f.item; } peek(),如果链表为空,则返回null。element(),如果链表为空,则抛异常。 还有其他区别么?

程序跑了3天,出现java.util.NoSuchElementException异常

程序运行3天,出现java.util.NoSuchElementException异常 [code="java"] java.util.NoSuchElementException at java.util.LinkedList.remove(LinkedList.java:788) at java.util.LinkedList.removeFirst(LinkedList.java:134) at java.util.LinkedList.poll(LinkedList.java:470) at com.etopad.netunion.visitorInfo.quartz.SaveVisitorInfoJob.pollWm(SaveVisitorInfoJob.java:118) at com.etopad.netunion.visitorInfo.quartz.SaveVisitorInfoJob.executeInternal(SaveVisitorInfoJob.java:70) at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:531) [/code] [code="java"] if (visitorsNum != 0) { for (int i = 0; i < visitorsNum; i++) { saveWmList.add(wmVisitors.poll()); } } [/code] 我用poll(),就算LinkedList链表中没数据也是输出null的啊,不会出现java.util.NoSuchElementException异常,程序跑了3天后才出现这个问题的,请问是什么原因?

java中链表结构元素的插入

java的LinkedList类提供了add(int index,E element)方法, 这个方法不需要从头开始数到index位置吗, 请问跟查找有什么区别, 为什么说LinkedList查找慢, 增删快呢? 谢谢!_

LinkedList如何实现线程安全

LinkedList如何实现线程安全,而且我需要getLast(),remove Last(),addFirst()方法

java集合里面LinkedList

package cn.com.wangxiukai; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class Test { public static void main(String[] args) { Entity tac=new Entity(1, "东川地震了", "大家"); Entity tar=new Entity(2, "黄河水满了", "我"); LinkedList hehe =new LinkedList(); hehe.addFirst(tac); hehe.addLast(tar); Entity tttt=(Entity) hehe.getFirst(); Entity tt=(Entity) hehe.getLast(); hehe.remove(); for (int i = 0; i <hehe.size(); i++) { Entity uu=new hehe.get(i); //为什么会出错呀? System.out.println((i+1)+uu.getName()); } } }

关于List<String>和LinkedList<String>的问题

public class test { public static void main(String[] args) { List<String> l=new LinkedList<String>(); //(1) String s=null; l.add("hello"); l.add("world"); l.addFirst("i am 008"); //此行出错!编译不通过,提示没有addFirst方法 ListIterator r=l.listIterator(); while(r.hasNext()){ s=(String)r.next(); System.out.println(s); } } } LinkedList有addFirst方法,但是编译提示找不到,但是把(1)改成LinkedList<String> l=new LinkedList<String>(); 就不会出错,这是为什么呢?我觉得List<String>是基类,LinkedList是子类(这里有可能不是继承关系),这样根据java多态的话,l应该是LinkedList,就应该有addFirst方法啊?期待赐教

关于LinkedList中的clear方法实现的疑问

clear方法的源码如下,在代码里他循环了所有item,将其previous和next全部设置成了null,目的何在? [code="java"] public void clear() { Entry<E> e = header.next; while (e != header) { Entry<E> next = e.next; e.next = e.previous = null; e.element = null; e = next; } header.next = header.previous = header; size = 0; modCount++; } [/code] 如果改成如下实现会有什么影响呢?其他的item都已经访问不到了,应该也不会影响GC啊。 public void clear() { header.next = header.previous = header; size = 0; modCount++; } [/code]

同步LinkedList时报错

代码: private List<String> requests = Collections.synchronizedList(new LinkedList<String>()); 和 private List<String> requests = Collections.synchronizedList(new LinkedList<String>()); 运行报错: FATAL EXCEPTION: main java.lang.IllegalStateException: Could not execute method of the activity at android.view.View$1.onClick(View.java:2144) at android.view.View.performClick(View.java:2485) at android.view.View$PerformClick.run(View.java:9080) at android.os.Handler.handleCallback(Handler.java:587) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:3683) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at android.view.View$1.onClick(View.java:2139) ... 11 more Caused by: java.lang.ClassCastException: java.util.Collections$SynchronizedList at com.countryst.nabard.turnbased.client.networking.ClientNetworking.login(ClientNetworking.java:72) at com.countryst.nabard.turnbased.client.MainActivity.loginToServer(MainActivity.java:87) at com.countryst.nabard.turnbased.client.MainActivity.onButtonClicked(MainActivity.java:217) ... 14 more

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

立方体线框模型透视投影 (计算机图形学实验)

计算机图形学实验 立方体线框模型透视投影 的可执行文件,亲测可运行,若需报告可以联系我,期待和各位交流

2019 AI开发者大会

2019 AI开发者大会

组成原理课程设计(实现机器数的真值还原等功能)

实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

软件测试2小时入门

软件测试2小时入门

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

计算机图形学-球的光照模型课程设计

计算机图形学-球的光照模型,有代码完美运行,有课程设计书

Linux常用命令大全(非常全!!!)

Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考: 系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 d...

因为看了这些书,我大二就拿了华为Offer

四年了,四年,你知道大学这四年我怎么过的么?

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

fakeLocation13.5.1.zip

fakeLocation13.5.1 虚拟定位 ios13.5.1的最新驱动下载,iPhone/iPad免越狱虚拟定位工具Location-cleaned驱动已更新

UnityLicence

UnityLicence

Python可以这样学(第一季:Python内功修炼)

Python可以这样学(第一季:Python内功修炼)

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

【数据结构与算法综合实验】欢乐连连看(C++ & MFC)案例

这是武汉理工大学计算机学院数据结构与算法综合实验课程的第三次项目:欢乐连连看(C++ & MFC)迭代开发代码。运行环境:VS2017。已经实现功能:开始游戏、消子、判断胜负、提示、重排、计时、帮助。

php+mysql学生成绩管理系统

学生成绩管理系统,分三个模块:学生,教师和管理员。 管理员模块:负责学生、老师信息的增删改;发布课程信息的增删改,以便让学生选课;审核老师提交的学生成绩并且打印成绩存档;按照课号查询每个课号的学生成绩

多功能数字钟.zip

利用数字电子计数知识设计并制作的数字电子钟(含multisim仿真),该数字钟具有显示星期、24小时制时间、闹铃、整点报时、时间校准功能

推荐24个国外黄色网站欣赏

在中国清朝,明黄色的衣服只有皇子才有资格穿,慢慢的黄色在中国就成了高贵的颜色。在人们的色彩印象中,黄色也表现为暂停。所以当你的网页设计采用黄色的时候,会让人们在你的网页前停留。 黄色,就像橙色和红色,黄色也是一个暖色。它有大自然、阳光、春天的涵义,而且通常被认为是一个快乐和有希望的色彩。黄色是所有色相中最能发光的颜色,给人轻快,透明,辉煌,充满希望的色彩印象。 黄色是一个高可见的色...

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

学生成绩管理系统(PHP + MYSQL)

做的是数据库课程设计,使用的php + MySQL,本来是黄金搭配也就没啥说的,推荐使用wamp服务器,里面有详细的使用说明,带有界面的啊!呵呵 不行的话,可以给我留言!

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

C++语言基础视频教程

C++语言基础视频教程

玩转Python-Python3基础入门

玩转Python-Python3基础入门

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问