LinkedList
Collection(接口)
- List(接口)
- ArrayList(实现类) 底层数据结构是数组,查询快,增删慢,线程是不安全的,效率高。
- Vector(实现类) 底层数据结构是数组,查询快,增删慢,线程是安全的,效率低。(即使这个是线程安全的,我们今后也不用,后面我们会将不安全的ArrayList变成安全的)
- LinkedList(实现类) 底层数据结构是双链表,增删快,查询慢,线程不安全的,效率高。
- Set(接口)
package com.shujia.day12;
import java.util.LinkedList;
public class LinkedListDemo1 {
public static void main(String[] args) {
//构造方法:
//LinkedList()
//构造一个空列表
//创建一个LinkedList集合对象
LinkedList list=new LinkedList();
list.addFirst("java");
list.addFirst("world");
list.addFirst("shujia");
list.addFirst("hello");
System.out.println(list);
System.out.println("=========================");
// public E getFirst()及getLast()
// System.out.println(list.getFirst());
// System.out.println(list);
// System.out.println(list.getLast());
//public E removeFirst()及public E removeLast() 返回的是被删除的元素
// System.out.println(list.removeFirst());
// System.out.println(list);
System.out.println(list.removeLast());
System.out.println(list);
}
}
面试题
请用LinkedList模拟栈数据结构的集合,并测试(面试题)
栈:先进后出
如果笔试的时候,直接使用LinkedList对象存储元素的话,0分
题目的本意是,自己写一个类,类中将LinkedList进行封装,使用自己的类创建对象,底层用的是LinkedList
先进行自己的方法的编写
package com.shujia.day12.LinkedListFaceTest;
import java.util.LinkedList;
public class MyStack {
private LinkedList linkedList;
public MyStack(){
linkedList=new LinkedList();
}
public void myAdd(Object obj){
linkedList.addFirst(obj);
}
public Object myGet(){
return linkedList.removeFirst();
}
public int getLength(){
return linkedList.size();
}
}
再进行调用
package com.shujia.day12.LinkedListFaceTest;
import java.util.LinkedList;
public class LinkedListFaceTest {
public static void main(String[] args) {
//创建自己的集合类对象
MyStack myStack=new MyStack();//底层实际上是创建一个LinkedList对象
myStack.myAdd("java");
myStack.myAdd("hello");
myStack.myAdd("hadoop");
myStack.myAdd("hive");
int length= myStack.getLength();
for (int i=0;i<length;i++){
System.out.println(myStack.myGet());
}
}
}