集合 的体系:
------------| Collection 单例集合的根接口
----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
-------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
-------------------| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
-------------------| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
----------------| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
笔试题: 说出ArrayLsit与Vector的区别?
相同点: ArrayList与Vector底层都是使用了Object数组实现的。
不同点:
1. ArrayList是线程不同步的,操作效率高。
Vector是线程同步的,操作效率低。
2. ArrayList是JDK1.2出现,Vector是jdk1.0的时候出现的。
package lx4;
import java.util.Enumeration;
import java.util.Vector;
public class Demo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector v=new Vector();
v.addElement("环境");
v.addElement("解决");
v.addElement("就是");
Enumeration e=v.elements();
while(e.hasMoreElements()) {
System.out.println(e.nextElement());
}
}
}
例题:
使用LinkedList存储一副扑克牌,然后实现洗牌功能。
package lx5;
import java.util.LinkedList;
import java.util.Random;
//扑克类
class Poker{
String color;
String num;
public Poker(String color,String num) {
super();
this.color=color;
this.num=num;
}
public String toString() {
return "{"+color+num+"}";
}
}
public class Demo5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList pokers =createPoker();
shufflePoker(pokers);
showPoker(pokers);
}
//生成扑克牌的方法
public static LinkedList createPoker() {
LinkedList list=new LinkedList();
String[] colors= {"黑桃","红桃","梅花","方块"};
String[] nums = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
for(int i=0;i<nums.length;i++) {
for(int j=0;j<colors.length;j++) {
list.add(new Poker(colors[j],nums));
}
}
return list;
}
//洗牌的功能
public static void shufflePoker(LinkedList pokers) {
Random random =new Random();
for(int i=0;i<100;i++) {
int index1=random.nextInt(pokers.size());
int index2=random.nextInt(pokers.size());
Poker poker1 =(Poker)pokers.get(index1);
Poker poker2 =(Poker)pokers.get(index2);
pokers.set(index1, poker2);
pokers.set(index2, poker1);
}
}
//显示扑克牌
public static void showPoker(LinkedList pokers) {
for(int i=0;i<pokers.size();i++) {
System.out.print(pokers.get(i));
if(i%10==9) {
System.out.println();
}
}
}
}
---------------------
【转载】
作者:江南233244
原文:https://blog.csdn.net/qq_3913124 ... 723?utm_source=copy
|
|