Day13_Java(8.6)

Day13_Java_集合

数据结构:维护一组数据的存储和检索

假设去制定一套数据结构的规则–>接口

List
尾部添加
void add(Object);
指定位置添加
void add(int index,Object obj);
指定位置删除
Object remove(int index);
获取指定位置上的数据
Object get(int index);
修改指定位置上的数据
void set(int index,Object obj);
获得迭代器
Iterator iterator();

迭代器(接口)
	判断有没有下个元素
	boolean hasNext();
	获取下一个元素
	Object next();
	从尾部删除一个元素
	Object remove();

连续型的数组

指定位置添加(index):
1.先判断index是否合法,需要注意的是,index能不能取0和能不能取size index<0||index>size
2.判断原先的数组是不是满了,如果满了要扩容
3.思考数据搬移
index = 1;
for(int i=size-1; i>index; i--)
	data[i] = data[i-1];
	data[i+1] = data[i];
4.在index位置上赋值就可以了
5.size++
指定的位置删除(index):
1.判断index的合法性,index能不能取0,index能不能取size.if(index<0||index>size)
2.提前使用变量保存一下data[index]用于返回
3.数据搬移,搬移的顺序是正序的
	index = 1;
	for(int i=index; i<size-1; i++){
		data[i] = data[i+1];
	}

链式

链表没有索引,没有下标表示
封装一个节点对象:NOde 维护两个属性--->保存的数据,指向下一个节点
private Object data;
public Node next;
提供getset方法,提供构造器

准备好头结点:new Node(null,null);
指定位置添加:
1.验证index的合法性
2.找到index对应的节点,需要通过头结点,一层一层往下找可以准备一个临时变量curr来代替
Node curr = head;
for(int i=0; i<index; i++){
	curr = curr.next;
}
3.循环完毕后current是index前一个节点
4.准备一个新的节点
	Node node = new Node(obj)
5.重新定位地址的指向
	node.next = curr.next();
6.size++;
指定位置删除
1.验证index的合法性
2.临时变量除了当前节点curr之外还需要当前节点的上一个pre
NOde curr = head;
Node pre = null;
3.找到index节点的位置
for(int i=0; i<=index; i++){
	//先把当前节点赋给上一个节点
	pre = curr;
	//把当前节点的下一个节点赋值给当前节点
	curr = curr.next;
}
4.需要来确认curr是谁,确认pre是谁
	curr代表要删除的那个节点
	pre代表要删除节点的上一个节点
5.保存一下curr里面的数据用于返回
	Object temp = curr.getData();
6.修改一下地址的指向
	pre.next = curr.next;
7.给当前节点置空
	curr = null;
8.size++;


Collection接口:用来保存单值
	List:提供一个数据可以重复的有序的集合
		ArrayList
		LinkedList
		Vector:线程安全的可扩展数组
	Set:提供一个无序且数据不可重复的集合
		HashSet:使用的Hash算法进行存储
		TreeSet:
	SortedSet:有序(提供了比较机制下的集合)
Map:用来键值对的形式保存数据
	HashMap:无序且可以值不重复
	TreeMap:可以提供排序规则,Key值不重复

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值