Java学习笔记整理-Collection-List(I)

Iterable所有超级接口
iterator()-获得迭代器
迭代器的方法:1.hasNext() 2.next() 3.remove
Collection(I):集合 存放多个元素,没有大小限制
一.LIst(I):线性结构 有序列表(顺序索引index)
a.ArrayList顺序结构(基于数组实现)
连续空间->空间浪费 带下标->查找可以快速定位 插入/删除->做大量移动,效率低
方法有
1.add(int index,object o){
if(size==data.length){//判断index是否合法,判断是否扩容
data=Arrars.copyOf(data,(data.length+1)*2)//长度直接增加一倍(数组复制)
}
for(int i=size;i>index;i–){//从index开始的每一个元素后移一位
data[i]=data[i-1];
}
data[index]=o;//在index位置上放入元素
size++;元素+1//
}
2.boolean add(object o){
add(size,o);
return true;
}
3.Object remove(int index){//返回所删除的元素
if(index<size&&index>=0){
Object obj=data[index];//获取要返回的元素
for(int i=index;i<size-1;i++){
data[i]=data[i+1];
}
size–;
return obj;
}
return null;
}
4. boolean remove(Object o){
for(int i=0;i<data.length;i++){
if(data[i].equals(o)){
remove(i);
return true;
}
}
return false;
}
5.String toString(){
StringBuilder sb=new StringBuilder("[");
for(int i=0;i<size;i++){
sb.append(data[i]+",");
}
sb.append("]");
sb.delete(sb.length()-2;sb.length()-1);
return sb.toString();
}
6.Object get(int index)
7.Object set(int index,Object o)//返回被替换的元素
8.clear()
9.size()
10.isEmpty()
b.LinkedList 链表结构(基于节点实现)
不需要连续空间->空间利用率
不带下标->查找next/prev,效率低
插入/删除->改变前后节点指向,效率高 隐含操作->查找
内部类:
class Node{
Object data;//存放数据
Node next;//指向下一个节点
}
方法:
1. boolean add(Object o){向最后添加元素
Node node=head;
while(node.next!=null){//找到当前列表最后一个节点
node=node.next;
}
Node newNode=new Node();
newNode.data=0;
node.next=newNode;
size++;
return true;
}
2.add(int index,Object o){//在index位置上插入o元素
if(index<=size&&index>=0){
Node node=preNode(index);
Node newNode=new Node();
newNode.data=o;
newNode.next=preNode.next;
preNode.next=newNode;
size++;
}
}
3.Object remove(int index){
Node n1=preNode(index):
Object obj=n1.next.data;
n1.next=n1.next.next;
size–;
return obj;

     	}
     4.boolean remove(object o){
    	 Node node=head;
     	 while(true){
     		if(node.next.data.equals(o){
     			node.next=node.next.next
                                  break;
     		}
     		node=node.next;
     	}
    	return true;
   }
   5.String toString(){
   	StringBuilder sb=new StringBuilder("[");
   	Node node=head;
   	while(node.next!=null){
   		node=node.next;
   		sb.append(node.data+",");
   	}
   	sb.append("]");
   	sb.delete(sb.length()-2,sb.length()-1);
   	return sb.toString();
   }
  6. Node preNode(int index){//获得前一个节点
   	Node node=head;
   	for(int i=0;i<index;i++){
   		node=node.next;
   	}
   	return node;
   }
  7. Object get(int index){
   	Node node =preNode(index);
   	return node.next.data;
   }
   8.Object set(int index,Object o)
   9.clear()
   10.isEmpty();
c.Vector(c)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值