java list与arraylist_《Java学习笔记》--对象容器之ArrayList和LinkedList

去SA面试的时候,面试官问我平时用Java的什么数据结构,答曰:Vector。又问:哪有用过其他的的吗?例如List和Map之类的。答曰:甚少。(自己汗一个,没水平)既然不会就要学习啦。

翻开《Java学习笔记》,里面对对象容器的描述不错。

1. ArrayList和LinkedList

ArrayList使用了数组结构实现List的数据。所以ArraryList用来快速定位对象是非常有效率的。但是如果要对ArraryList中间插入或者删除,效率会非常低。

LinkedList使用链表来实现的List。所以跟ArrayList相反,LinkedList对于插入和删除是非常有优势,反之对于快速定位,是LinkedList的弱项。

1)ArrayListDemo

public class ArrayListDemo {

public static void main(String[] args) {

//用Scanner类,可以轻松获得commander的输入

Scanner scanner = new Scanner(System.in);

List list = new ArrayList();

//在控制台输入,quit退出

while(true) {

System.out.print("Rokey@console# ");

String input = scanner.next();

if(input.equals("quit")) {

break;

}

list.add(input);

}

System.out.print("显示输入:");

//使用5.0的foreach功能对List进行遍历

for(String s:list) {

//5.0的类C的输出格式

System.out.printf("%s ",s);

}

}

}

输出:

Rokey@console# 一二三

Rokey@console# 三二一

Rokey@console# quit

显示输入:一二三 三二一

2)用LinkedList实现的一个字符串栈

/**

*

* @author Rokey

* 用LinkedList构建一个字符栈,先进先出

*/

public class StringStack {

private LinkedList linkList;

public StringStack() {

linkList = new LinkedList();

}

public void push(String s) {

//将元素加入链表第一个位置

linkList.addFirst(s);

}

public String pop() {

//删除链表第一个元素,并返回

return linkList.removeFirst();

}

public String top() {

//返回链表第一个元素,但并不删除

return linkList.getFirst();

}

public boolean isEmpty() {

//检查链表是否为空

return linkList.isEmpty();

}

}

public class StringStackDemo {

public static void main(String[] args) {

//用Scanner类,可以轻松获得commander的输入

Scanner scanner = new Scanner(System.in);

StringStack stack = new StringStack();

//在控制台输入,quit退出

while (true) {

System.out.print("Rokey@console# ");

String input = scanner.next();

if (input.equals("quit")) {

break;

}

stack.push(input);

}

System.out.print("显示输入:");

//使用5.0的foreach功能对List进行遍历

while(!stack.isEmpty()) {

//5.0的类C的输出格式

System.out.printf("%s ", stack.pop());

}

}

}

输出:

Rokey@console# 一二三

Rokey@console# 三二一

Rokey@console# quit

显示输入:三二一 一二三

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值