Skip to content

Commit

Permalink
修改 加载算法 删除排序,提高加载速度
Browse files Browse the repository at this point in the history
  • Loading branch information
toolgood committed Apr 6, 2020
1 parent 8abb1f3 commit 3d1b222
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 9 deletions.
22 changes: 19 additions & 3 deletions java/toolgood.words/src/main/java/toolgood/words/StringSearch.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package toolgood.words;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;

import toolgood.words.internals.TrieNode;
import toolgood.words.internals.TrieNode2;
Expand All @@ -29,6 +30,7 @@ private void SetKeywords()

List<TrieNode> allNode = new ArrayList<TrieNode>();
allNode.add(root);
Map<Integer,List<TrieNode>> allNodeLayers=new Hashtable<Integer,List<TrieNode>>();

for (int i = 0; i < _keywords.length; i++) {
String p = _keywords[i];
Expand All @@ -37,11 +39,25 @@ private void SetKeywords()
nd = nd.Add(p.charAt(j) );
if (nd.Layer == 0) {
nd.Layer = j + 1;
allNode.add(nd);
if(allNodeLayers.containsKey(nd.Layer)==false){
List<TrieNode> nodes=new ArrayList<TrieNode>();
nodes.add(nd);
allNodeLayers.put(nd.Layer, nodes);
}else {
allNodeLayers.get(nd.Layer).add(nd);
}
}
}
nd.SetResults(i);
}
for (int layer : allNodeLayers.keySet()) {
List<TrieNode> nodes=allNodeLayers.get(layer);
for (int i = 0; i < nodes.size(); i++) {
allNode.add(nodes.get(i));
}
}
allNodeLayers.clear();
allNodeLayers=null;

List<TrieNode> nodes = new ArrayList<TrieNode>();
for (Character key : root.m_values.keySet()) {
Expand Down Expand Up @@ -76,7 +92,7 @@ private void SetKeywords()
}
root.Failure = root;

Collections.sort(allNode);
//Collections.sort(allNode);
for (int i = 0; i < allNode.size(); i++) { allNode.get(i).Index = i; }


Expand Down
21 changes: 18 additions & 3 deletions java/toolgood.words/src/main/java/toolgood/words/WordsSearch.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package toolgood.words;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -54,6 +54,7 @@ private void SetKeywords()

List<TrieNode> allNode = new ArrayList<TrieNode>();
allNode.add(root);
Map<Integer,List<TrieNode>> allNodeLayers=new Hashtable<Integer,List<TrieNode>>();

for (int i = 0; i < _keywords.length; i++) {
String p = _keywords[i];
Expand All @@ -62,11 +63,25 @@ private void SetKeywords()
nd = nd.Add(p.charAt(j) );
if (nd.Layer == 0) {
nd.Layer = j + 1;
allNode.add(nd);
if(allNodeLayers.containsKey(nd.Layer)==false){
List<TrieNode> nodes=new ArrayList<TrieNode>();
nodes.add(nd);
allNodeLayers.put(nd.Layer, nodes);
}else {
allNodeLayers.get(nd.Layer).add(nd);
}
}
}
nd.SetResults(i);
}
for (int layer : allNodeLayers.keySet()) {
List<TrieNode> nodes=allNodeLayers.get(layer);
for (int i = 0; i < nodes.size(); i++) {
allNode.add(nodes.get(i));
}
}
allNodeLayers.clear();
allNodeLayers=null;

List<TrieNode> nodes = new ArrayList<TrieNode>();
for (Character key : root.m_values.keySet()) {
Expand Down Expand Up @@ -101,7 +116,7 @@ private void SetKeywords()
}
root.Failure = root;

Collections.sort(allNode);
//Collections.sort(allNode);
for (int i = 0; i < allNode.size(); i++) { allNode.get(i).Index = i; }


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ private void SetKeywords() {

List<TrieNode> allNode = new ArrayList<TrieNode>();
allNode.add(root);
Map<Integer,List<TrieNode>> allNodeLayers=new Hashtable<Integer,List<TrieNode>>();

for (int i = 0; i < _keywords.length; i++) {
String p = _keywords[i];
Expand All @@ -152,11 +153,24 @@ private void SetKeywords() {
nd = nd.Add(p.charAt(j));
if (nd.Layer == 0) {
nd.Layer = j + 1;
allNode.add(nd);
}
if(allNodeLayers.containsKey(nd.Layer)==false){
List<TrieNode> nodes=new ArrayList<TrieNode>();
nodes.add(nd);
allNodeLayers.put(nd.Layer, nodes);
}else {
allNodeLayers.get(nd.Layer).add(nd);
} }
}
nd.SetResults(i);
}
for (int layer : allNodeLayers.keySet()) {
List<TrieNode> nodes=allNodeLayers.get(layer);
for (int i = 0; i < nodes.size(); i++) {
allNode.add(nodes.get(i));
}
}
allNodeLayers.clear();
allNodeLayers=null;

List<TrieNode> nodes = new ArrayList<TrieNode>();
for (Character key : root.m_values.keySet()) {
Expand Down Expand Up @@ -191,7 +205,7 @@ private void SetKeywords() {
}
root.Failure = root;

Collections.sort(allNode);
//Collections.sort(allNode);
for (int i = 0; i < allNode.size(); i++) {
allNode.get(i).Index = i;
}
Expand Down

0 comments on commit 3d1b222

Please sign in to comment.