数据结构以及代码性能

Iterator 和 for的性能比较:
1:线性表和链式表
Iterator 集合框架中的接口,主要用于迭代集合中的元素,而对于像LinkedList,如果你用For循环,则LinkedList的get()方法效率是非常低的,因为它每次访问一个元素都要从头开始。而对于Iterator来说,它就像你用吸管从饮料瓶吸饮料一样,每吸一口就消耗掉一点,它的迭代效率很高。

使用迭代模式的优点:
1,实现功能分离,简化容器接口。让容器只实现本身的基本功能,把迭代功能委让给外部类实现,符合类的设计原则。
2,隐藏容器的实现细节。
3,为容器或其子容器提供了一个统一接口,一方面方便调用;另一方面使得调用者不必关注迭代器的实现细节。
4,可以为容器或其子容器实现不同的迭代方法或多个迭代方法。

package Method;

/**
 * 链表节点
 * @author wm
 *
 */
public class LinkNode { 
    private Object obj;              //节点内的数据 
    private LinkNode childNode;      //保存对下一个节点 
    private LinkNode parentNode;    //保存对上一个节点

    public LinkNode(Object obj){ 
        this.obj=obj; 
    }

    public Object getObj() {
        return obj;
    }

    public void setObj(Object obj) {
        this.obj = obj;
    }

    public LinkNode getChildNode() {
        return childNode;
    }

    public void setChildNode(LinkNode childNode) {
        this.childNode = childNode;
    }

    public LinkNode getParentNode() {
        return parentNode;
    }

    public void setParentNode(LinkNode parentNode) {
        this.parentNode = parentNode;
    } 
}
package Method;

public class LinkList { 
    private LinkNode first=null; 
    private LinkNode last=null; 

    /**
     * 添加节点信息
     * @param obj
     */
    public void addNode(Object obj){ 
        LinkNode newnode=new LinkNode(obj); 
        if(first==null){ 
            first=newnode;
            last=newnode;
        }else{ 
            LinkNode node=first; 
            while(node.getChild()!=null){
                node=node.getChild();
            } 
            node.setChild(newnode);
            newnode.setParent(node);//把这个节点作为父节点 
            last=newnode; 
        } 
    } 
    /** 
     * 向指定链表添加元素的方法 
     * @param obj   插入的元素 
    */
    public void add(Object obj){  
        LinkNode newnode=new LinkNode(obj); 
        if(first==null){//如果链表为空  
            first = newnode;  
        }else{  
            last=newnode;//先把新增结点放在最后  
        }  
        last=newnode;//再把最后一个结点向后移位  
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值