zoukankan      html  css  js  c++  java
  • 用java写的TrieTree

    用java写的trie tree主要是在写spider的时候,需要存储解析出的网页的url,判断是否已经处理过或已经加入等待处理的url队列,避免出现网页的url出现循环,使用trietree的最大的有点就是节约存储空间;包括两个方法:一是find,查找相应的string是否已经出现过;二是add,把不存在的string加入到TrieTree。

    下面是源代码:

     1 package com.base;
     2 
     3 class TrieTreeNode{
     4     public String str=null;
     5     Object[] children=new Object[128];
     6 }
     7 
     8 public class TrieTree {
     9     private TrieTreeNode topNode=new TrieTreeNode();
    10     
    11     public boolean findNode(String strNode){
    12         //查找trietree中是否有要查找的字符串
    13         TrieTreeNode node=topNode;
    14         for(int i=0;i<strNode.length();++i){
    15             if(node.children[(int)strNode.charAt(i)]!=null){
    16                 node=(TrieTreeNode)node.children[(int)strNode.charAt(i)];
    17             }else return false;
    18         }
    19         if(node.str!=null && node.str.equals("1")) return true;
    20         else return false;
    21     }
    22     
    23 
    24     public void addNode(String strNode){
    25         //把遇到的字符串加入到trieTree
    26         TrieTreeNode node=topNode;
    27         TrieTreeNode temp;
    28         for(int i=0;i<strNode.length();++i){
    29             if(node.children[(int)strNode.charAt(i)]==null){
    30                 temp=new TrieTreeNode();
    31                  node.children[(int)strNode.charAt(i)]=temp;
    32             }
    33             node=(TrieTreeNode) node.children[(int)strNode.charAt(i)];
    34         }
    35         
    36         node.str="1";//1代表在trietree中加入这个节点,标记其存在
    37 //        if(node.children[strNode.length()]==null){
    38 //            temp=new TrieTreeNode();
    39 //            temp.str="1";//1代表在trietree中加入这个节点,标记其存在
    40 //            node.children[(int)strNode.charAt(strNode.length()-1)]=temp;
    41 //        }
    42         
    43     }
    44 }
  • 相关阅读:
    Java关键字new和newInstance的区别
    关于能提高Java代码可重用性的三个措施
    Java编程技巧—— JDBC编程总结
    Java高质量代码之数组与集合
    ab的压力测试(转)
    利用DOCKER实现云桌面的开发环境初步设想
    时间和日期
    内存流-操作文件的方式操作内存
    获取文件描述符
    流定位
  • 原文地址:https://www.cnblogs.com/redlight/p/2690198.html
Copyright © 2011-2022 走看看