javalinkedlist源码
㈠ java中LinkedList问题
Entry<E> newEntry = new Entry<E>(e,entry,entry.previous);
这句话new一个Entry,
Entry类本身的构造方法有3个参数:(E e,Entry next,Entry previous)
对应于传进来的3个实参 (e,entry,entry.previous)
而传进来的entry本身是指向header.next的引用,header应该是LinkedList的
头结点,本身无数据,它指向的next才是LinkedList链表的第一个数据结点
接着newEntry.previous就是指向header,然后.next=newEntry就是将header的next引用指向newEntry,
同理,newEntry.next即为传进来的entry,即最开始的header.next,然后.previous=newEntry将enrty的previous引用指向newEntry
这样,就完成了在header头结点和原来的第一个结点之间插入一个结点的过程,即新插入的结点e就是header指向的第一个结点
㈡ Java LinkedList问题
这跟并发有毛关系啊,你们在哪能看出这个程序有并发?
只是在迭代的时候把尾元素删除了,所以it.next()遍历的元素不一致报的错
JDK源码
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ();
}
与期待值不同报 异常
㈢ java 中的LinkedList 是双向循环列表吗
源代码中:
public void addLast(E e) {
addBefore(e, header);
}
将指定元素添加到此列表的结尾
public boolean add(E e) {
addBefore(e, header);
return true;
}
所以,add是向列表尾加的
看了一下addBefore方法
应该是双链表结构 不是循环双链表
㈣ java源码学习求助 - LinkedList
写 class LinkedList 应该要自己建 class Node.
JDK API Specification 中有两个Node, 都是interface.
这不适合你的需求. 即使想用, 也必须有 import 才行.
㈤ 求JAVA小程序设计一个链表结点类LinkNode,此类可以存放int、long
//帮楼主改好了。有三个类。分别放到对应的文件里。文件名要和类名相同。注意大小写。如LinkNode.java
//第一个类
public class Content {
private int key;
private int name;
//int、long、float、double、byte、short、String、StringBuffer
public Content(int key, int name) {
this.key = key;
this.name = name;
}
public Content(int key, long name) {
this.key = key;
this.name = (int)name;
}
public Content(int key, double name) {
this.key = key;
this.name = (int)name;
}
public Content(int key, byte name) {
this.key = key;
this.name = (int)name;
}
public Content(int key, short name) {
this.key = key;
this.name = (int)name;
}
public Content(int key, String name) {
this.key = key;
this.name = Integer.parseInt(name);
}
public long getKey() {
return key;
}
public void setKey(int key) {
this.key = key;
}
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
}
//第二个类
import java.util.Comparator;
public class ContentComparator implements Comparator {
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
Content c1 = (Content) o1;
Content c2 = (Content) o2;
if (c1.getName() > c2.getName()) {
return 1;
} else {
if (c1.getName() == c2.getName()) {
return 0;
} else {
return -1;
}
}
}
}
//第三个类
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class LinkNode {
public static void main(String[] args) {
// TODO Auto-generated method stub
List list = new ArrayList();
for (int i = 0 ; i < 10; i++){
int a = (int) (Math.random() * (100-1)+1);
list.add(new Content(i,a));
}
ContentComparator comp = new ContentComparator();
Collections.sort(list,comp);
Content content;
for(int i = 0; i < list.size(); i++){
content = (Content)list.get(i);
System.out.println(" Random " + content.getName());
}
}
}
㈥ 一开始学习java有必要看源代码吗诸如Arraylist,Linkedlist的这些源代码
你好,看源码是可以帮助你以后写代码的。如果你是刚开始学,就没有必要看那些东西。但是你要是有能力的话,看看还是很有帮助的,你说的那几个类,等你学习到了,最好还是看看,可以加深你对他们的理解。
㈦ Java中的linkedlist有两个方法,element()和getFirst(),有什么不一样
这种最好的就是看jdk源码和源码上的注释,以及编写测试代码实际调用测试一下。
看jdk源码,LinkedList<E>源码
先看getFirst()
/**
*.
*
*@
*@
*/
publicEgetFirst(){
finalNode<E>f=first;
if(f==null)
();
returnf.item;
}
看注释Returns the first element in this list,返回列表的第一个元素,没毛病。
然后来看element()
/**
*Retrieves,butdoesnotremove,thehead(firstelement)ofthislist.
*
*@returntheheadofthislist
*@
*@since1.5
*/
publicEelement(){
returngetFirst();
}
结果…… LinkedList 里面 element()就是直接调用的getFirst()方法