学习笔记--单例集合--List分类

list接口下的实现类ArrayList

是JDk1.2出现的
特点:查询速度快,增删慢。
ArrayList底层是维护了一个Object数组实现的,使用无参构造函数时,Object数组默认的容量是10长度不够时自动增长0.5倍
特有方法
ensoureCapacity(int minCapacity)
trimToSize()调整当前集合大小(删掉多余数组空间)

list接口下的实现类LinledList

Linked List底层时使用了链表数据实现的
特点:查询速度慢,增删快。
特有的方法
1:方法介绍
addFirst(E e) 把元素添加到集合的首位
addLast(E e) 把原始添加到集合的末尾处
getFirst() 获取集合中首位置的元素
getLast() 获取集合中末位置的元素
removeFirst() 删除集合中的首位置元素并返回
removeLast()删除集合中的末尾元素并返回 2:数据结构
1:栈 (1.6) : 主要是用于实现堆栈数据结构的存储方式。
先进后出
push() 将元素推入此列表所表示的堆栈,换句话说将元素插入到集合的开头处
pop() 从此列表所表示的堆栈处弹出一个元素,换句话说移除并返回此列表的第一个元素
2:队列(双端队列1.5): 主要是为了让你们可以使用LinkedList模拟队列数据结构的存储方式。
先进先出
offer() 将制定元素添加到此列表的末尾(最后一个元素)
poll()返回集合中首位置的元素并删除集合中首位置的元素

			 3:返回逆序的迭代器对象       			descendingIterator()   返回逆序的迭代器对象

用LinkedList模拟堆栈和队列的储存方式

package collection;

import java.util.*;

class StackList{//模拟堆栈的储存方式
	LinkedList list;
	public StackList(){
		list = new LinkedList();
	}
	public void add(Object o){
		list.push(o);
	}
	public Object delete(){
		return list.pop();
	}
	public int size(){
		return list.size();
	}
}
class TeamList{//模拟队列的储存方式
	
	LinkedList list;
	
	public TeamList(){
		list = new LinkedList();
	}
	
	public void add(Object o){
		list.offer(o);
	}
	
	public Object remove(){
		return list.poll();
	}
	
	//获取元素个数
	public int size(){
		return list.size();
	}
	
}
public class collection03 {
public static void main(String[] args){
	TeamList list=  new TeamList();
	list.add("李嘉诚");
	list.add("马云");
	list.add("王健林");
	
	int size = list.size();//创建变量储存集合长度
	for(int i = 0 ; i<size ; i++){
		System.out.println(list.remove());
	}
}
}

实战

用LinkedList存储一副扑克牌并实现洗牌功能

package collection;
import java.util.*;
public class colllection04 {
 LinkedList list;
	public static void main(String[] args){
		System.out.println(reform(creatpoke()));

	}
	public static LinkedList creatpoke(){//创建一副扑克
		String[] color = {"黑桃","红桃","黑片","红片"};
		String[] number = {"2","3","4","5","6","7","8","9","10","J","O","K","A"};
		 LinkedList list = new LinkedList();
		for(int i=0;i<4;i++){
			for(int j=0;j<13;j++){
				list.addLast(color[i]+number[j]);
			}
		}
		list.addLast("大王");
		list.addLast("小王");
		System.out.println("创建了一副扑克:"+list);
		return list;
	}
	 public static LinkedList reform(LinkedList list){//洗牌 通过使用Random随机数对数组进行移除和插入操作
		 int size = list.size();
		 for(int i=0;i<100;i++){
			Random r = new Random();
			int temp = r.nextInt(size);
			Object l = list.remove(temp);
			list.add(r.nextInt(size), l);
			
		 }
		 return list;
	 }
}

list接口下的实现类Vector

是JDK1.0出现的
底层维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值