Pages

Wednesday, May 18, 2011

Example of ConcurrentModificationException


private static void refineMap(BayesianResult bayes, HashMap terms) {
for (Map.Entry entry : terms.entrySet()) {
String word = entry.getKey();
Token t = entry.getValue();
if ((t.getClean_count()+t.getSens_count()) < 10) {
terms.remove(word);
continue;
}
}
}

Here I am modifying the HashMap ( terms.remove(word) ) while iteration is already being done on it. This throws an exception Exception in thread "main" java.util.ConcurrentModificationException


Monday, May 16, 2011

Jsoup Java Library for HTML parsing, Implementation and Examples


What is the issue that it resolves? 
You have HTML in a Java String or to fetch the webpage, and you want to parse that HTML to get at its contents, or to make sure it's well formed, or to modify it. 

Fetching the URL from the web:
Method:  Jsoup.connect(String url);

This method basically returns a Document (org.jsoup.nodes.Document) http://jsoup.org/apidocs/org/jsoup/nodes/Document.html , which is basically the HTML document transformed into this Class. The text, body, head, title etc of the Document can be accessed. Let us cite the various usage of the same. 

Getting the Title of the Document : 
Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();

Here it returned a String which was the title of the Document, in most cases this is not the return Value. When we need to access attributes in body or say in the header the method returns an object of type Element (org.jsoup.nodes.Element).

Getting the text from an HTML file :

Document doc = Jsoup.parse(url);
String title = doc.title();
String text = doc.text(); 

Retrieving the metadata (description and keywords):

  Document d =  Jsoup.connect("http://in.yahoo.com/").get();
Element meta = d.select("meta[name=description]").first();
System.out.println(meta.attr("content"));
meta = d.select("meta[name=keywords]").first();
System.out.println(meta.attr("content"));

Download the jsoup jar (version 1.5.2)

Wednesday, February 2, 2011

Thinking Recursively



List of some of the best resources to learn Recursion, Backtracking and most importantly to start thinking recursively.

1. Recursion Basics, Solving Problems recursively, raise to the power example and mechanics of what is going to happen, Choosing a subset
Video Lecture

2. Thinking Recursively, Permute Code, More Examples, Tree of Recursive calls
Video Lecture

3. Testing with different cases, subsets, subset stratergy, Exhaustive Recursion, Recursive BackTracking, Anagram Finder, N Queens
Video Lecture

4. Backtracking Pseudocode, Sudoku Solver, Sudoku Code, Cryptarithmetic
Video Lecture

Reference: http://see.stanford.edu/see/courseInfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e (Stanford Engineering Everywhere)




Tuesday, February 1, 2011

Print Permutations of a String

void permutation(string, string);
int main() {
permutation("","ABC");
}
void permutation(string sofar, string remaining) {
if (remaining=="") {
//Print the string sofar<<"\n";< p="">
return;
}
for (int i=0;i
permutation(sofar+remaining[i],remaining.substr(0,i)+remaining.substr(i+1));
}
}

Recursive Approach for Reversing a String


Recursive Approach for Reversing a String

Simple Approach: Take the last character + reverse(rest of the string)
Base Case: When we encounter a single character, return that character.

string reverse(string str) {
if (str.length()==1)
return str;
return str[str.length()-1]+reverse(str.substr(0,str.length()-1));
}