How to use Java TreeMap with Examples

Java TreeMap Example

[no_toc]
In the tutorial, Grokonez introduces about Java TreeMap and how to use it by examples:
– Explore Java TreeMap’s hierarchy.
– Do examples with Java TreeMap method APIs

Let’s start with more details!

Related posts:
How to use Java PriorityQueue with Examples

Java TreeMap

public class TreeMap
	extends AbstractMap
		implements NavigableMap, Cloneable, Serializable
		
public interface NavigableMap
	extends SortedMap

– Java TreeMap extends AbstractMap class and implements NavigableMap interface. Here is Java TreeMap hierarchy:

Java-Tree-Map-Examples-Hierarchy

– Java TreeMap use a Red-Black tree based NavigableMap implementation.

– Java TreeMap is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which constructor is used.

– Java TreeMap provides guaranteed log(n) time cost for the containsKey, get, put and remove operations.

– Java TreeMap’s implementation is not synchronized. If multiple threads access a map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally.

SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));

– Java TreeMap has all the functionalities of SortedMap and NavigableMap interface. A SortedMap extended with navigation methods returning the closest matches for given search targets:

+ Methods lowerEntry, floorEntry, ceilingEntry, and higherEntry return Map.Entry objects associated with keys respectively less than, less than or equal, greater than or equal, and greater than a given key, returning null if there is no such key.
+ Methods lowerKey, floorKey, ceilingKey, and higherKey return only the associated keys
+ Methods firstEntry, pollFirstEntry, lastEntry, and pollLastEntry that return and/or remove the least and greatest mappings, if any exist, else returning null.

– Java TreeMap cannot contain duplicate keys; each key can map to at most one value.

– Java TreeMap cannot contain the null key. BUT It can have null values.

Construct Java TreeMap

Setup for Examples

– Create 2 classes KeyInfo and Employee:

class KeyInfo{
	Integer id;
	String name;
	
	public KeyInfo(Integer id, String name) {
		this.id = id;
		this.name = name;
	}
	
	public int getId() {
		return this.id;
	}
	
	public String getName() {
		return this.name;
	}
	
	public String toString() {
		return String.format("[id = %d, name = %s]", id, name);
	}
}

class Employee{
	Integer id;
	String name;
	Double salary;
	String city;
	
	public Employee(Integer id, String name, Double salary, String city){
		this.id = id;
		this.name = name;
		this.salary = salary;
		this.city = city;
	}
	
	public int getId() {
		return this.id;
	}
	
	public String getName() {
		return this.name;
	}
	
	public Double getSalary() {
		return this.salary;
	}
	
	public String getCity() {
		return this.city;
	}
	
	public String toString() {
		return String.format("[id = %d, name = %s, salary = %.2f, city = %s]", id, name, salary, city);
	}
}

1. TreeMap() Constructor

Detail:

public TreeMap()

– Constructs a new, empty Java Tree Map, using the natural ordering of its keys.
– All keys inserted into the map must implement the Comparable interface.

Example:

Map 	numberMap = new TreeMap();

numberMap.put(1, "one");
numberMap.put(9, "nine");
numberMap.put(5, "five");
numberMap.put(2, "two");
numberMap.put(7, "seven");
numberMap.put(4, "four");

System.out.println(numberMap);

-> Output:

{1=one, 2=two, 4=four, 5=five, 7=seven, 9=nine}

Java TreeMap with Comparable Object Keys

Add Comparable interface to KeyInfo class:

class KeyInfo implements Comparable{
	...
	
	@Override
	public int compareTo(KeyInfo o) {
		if(id == o.id)  
			return 0;  
		else if(id > o.id)  
			return 1;  
		else
			return -1; 
	}

	...
}

– Create Java TreeMap Example:

Map employeeMap = new TreeMap();

employeeMap.put(new KeyInfo(1, "Jack"), new Employee(1, "Jack", 6000.0, "Fall River"));
employeeMap.put(new KeyInfo(4, "Joe"), new Employee(4, "Joe", 7000.0, "Wilmington"));
employeeMap.put(new KeyInfo(10, "Davis"), new Employee(10, "Davis", 6500.0, "Hammond"));
employeeMap.put(new KeyInfo(7, "Mary"), new Employee(6, "Mary", 5700.0, "Duluth"));
employeeMap.put(new KeyInfo(9, "Jane"), new Employee(8, "Jane", 8000.0, "Albany"));
employeeMap.put(new KeyInfo(3, "Harry"), new Employee(3, "Harry", 6800.0, "Parma"));

System.out.println(employeeMap);

-> Output:

//	{	
//		[id = 1, name = Jack]=[id = 1, name = Jack, salary = 6000,00, city = Fall River], 
// 		[id = 3, name = Harry]=[id = 3, name = Harry, salary = 6800,00, city = Parma], 
//		[id = 4, name = Joe]=[id = 4, name = Joe, salary = 7000,00, city = Wilmington], 
//		[id = 7, name = Mary]=[id = 6, name = Mary, salary = 5700,00, city = Duluth], 
//		[id = 9, name = Jane]=[id = 8, name = Jane, salary = 8000,00, city = Albany], 
//		[id = 10, name = Davis]=[id = 10, name = Davis, salary = 6500,00, city = Hammond]
//	}

2. TreeMap(comparator) Constructor

Detail:

public TreeMap(Comparator comparator)

– Constructs a new, empty tree map, ordered according to the given comparator.
– All keys inserted into the map must be mutually comparable by the given comparator.
– The comparator that will be used to order this map. If null, the natural ordering of the keys will be used.

Example: reverse order of entries

Map 	numberMap = new TreeMap(Comparator.reverseOrder());

numberMap.put(1, "one");
numberMap.put(9, "nine");
numberMap.put(5, "five");
numberMap.put(2, "two");
numberMap.put(7, "seven");
numberMap.put(4, "four");

System.out.println(numberMap);

-> Output:

// {9=nine, 7=seven, 5=five, 4=four, 2=two, 1=one}

Create Java TreeMap Example with Object Keys using Comparator

– Implement Comparator class in Java TreeMap constructor:

Map employeeMap = new TreeMap(new Comparator() {

	@Override
	public int compare(KeyInfo o1, KeyInfo o2) {
		if (o1.id == o2.id) 
		    return 0; 
		else if(o1.id < o2.id)
			return 1;
		else 
			return -1;
	}
});

- Add entries to the TreeMap:

employeeMap.put(new KeyInfo(1, "Jack"), new Employee(1, "Jack", 6000.0, "Fall River"));
employeeMap.put(new KeyInfo(4, "Joe"), new Employee(4, "Joe", 7000.0, "Wilmington"));
employeeMap.put(new KeyInfo(10, "Davis"), new Employee(10, "Davis", 6500.0, "Hammond"));
employeeMap.put(new KeyInfo(7, "Mary"), new Employee(6, "Mary", 5700.0, "Duluth"));
employeeMap.put(new KeyInfo(9, "Jane"), new Employee(8, "Jane", 8000.0, "Albany"));
employeeMap.put(new KeyInfo(3, "Harry"), new Employee(3, "Harry", 6800.0, "Parma"));

System.out.println(employeeMap);

-> Output:

//	{
//		[id = 10, name = Davis]=[id = 10, name = Davis, salary = 6500,00, city = Hammond], 
//		[id = 9, name = Jane]=[id = 8, name = Jane, salary = 8000,00, city = Albany], 
//		[id = 7, name = Mary]=[id = 6, name = Mary, salary = 5700,00, city = Duluth], 
//		[id = 4, name = Joe]=[id = 4, name = Joe, salary = 7000,00, city = Wilmington], 
//		[id = 3, name = Harry]=[id = 3, name = Harry, salary = 6800,00, city = Parma], 
//		[id = 1, name = Jack]=[id = 1, name = Jack, salary = 6000,00, city = Fall River]
//	}

3. TreeMap(Map m) Constructor

Detail:

public TreeMap(Map m)

- Constructs a new tree map containing the same mappings as the given map, ordered according to the natural ordering of its keys
- All keys inserted into the new map must implement the Comparable interface.
- BigO = n*log(n) time.

Example:

- Add Comparable to KeyInfo:

class KeyInfo implements Comparable{
	...

	@Override
	public int compareTo(KeyInfo o) {
		if(id == o.id)  
			return 0;  
		else if(id > o.id)  
			return 1;  
		else
			return -1; 
	}
	
	...
}

- Create a Java TreeMap:

Map employeeMap = new TreeMap(new HashMap() {
	{
		put(new KeyInfo(1, "Jack"), new Employee(1, "Jack", 6000.0, "Fall River"));
		put(new KeyInfo(4, "Joe"), new Employee(4, "Joe", 7000.0, "Wilmington"));
		put(new KeyInfo(10, "Davis"), new Employee(10, "Davis", 6500.0, "Hammond"));
		put(new KeyInfo(7, "Mary"), new Employee(6, "Mary", 5700.0, "Duluth"));
		put(new KeyInfo(9, "Jane"), new Employee(8, "Jane", 8000.0, "Albany"));
		put(new KeyInfo(3, "Harry"), new Employee(3, "Harry", 6800.0, "Parma"));
	}
});

System.out.println(employeeMap);

-> Output:

//	{
//		[id = 10, name = Davis]=[id = 10, name = Davis, salary = 6500,00, city = Hammond], 
//		[id = 9, name = Jane]=[id = 8, name = Jane, salary = 8000,00, city = Albany], 
//		[id = 7, name = Mary]=[id = 6, name = Mary, salary = 5700,00, city = Duluth], 
//		[id = 4, name = Joe]=[id = 4, name = Joe, salary = 7000,00, city = Wilmington], 
//		[id = 3, name = Harry]=[id = 3, name = Harry, salary = 6800,00, city = Parma], 
//		[id = 1, name = Jack]=[id = 1, name = Jack, salary = 6000,00, city = Fall River]
//	}

4. TreeMap(SortedMap m) Constructor

Detail:

public TreeMap(SortedMap m)

- Constructs a new tree map containing the same mappings and using the same ordering as the specified sorted map.
- This method runs in linear time.

Example:

+ Create SortedMap:

SortedMap sortedMap = new TreeMap();

sortedMap.put(new KeyInfo(1, "Jack"), new Employee(1, "Jack", 6000.0, "Fall River"));
sortedMap.put(new KeyInfo(4, "Joe"), new Employee(4, "Joe", 7000.0, "Wilmington"));
sortedMap.put(new KeyInfo(10, "Davis"), new Employee(10, "Davis", 6500.0, "Hammond"));
sortedMap.put(new KeyInfo(7, "Mary"), new Employee(6, "Mary", 5700.0, "Duluth"));
sortedMap.put(new KeyInfo(9, "Jane"), new Employee(8, "Jane", 8000.0, "Albany"));
sortedMap.put(new KeyInfo(3, "Harry"), new Employee(3, "Harry", 6800.0, "Parma"));

+ Then init a Java TreeMap:

Map newEmployeesMap = new TreeMap(sortedMap);

System.out.println(newEmployeesMap);

-> Output:

//	{	
//		[id = 1, name = Jack]=[id = 1, name = Jack, salary = 6000,00, city = Fall River], 
// 		[id = 3, name = Harry]=[id = 3, name = Harry, salary = 6800,00, city = Parma], 
//		[id = 4, name = Joe]=[id = 4, name = Joe, salary = 7000,00, city = Wilmington], 
//		[id = 7, name = Mary]=[id = 6, name = Mary, salary = 5700,00, city = Duluth], 
//		[id = 9, name = Jane]=[id = 8, name = Jane, salary = 8000,00, city = Albany], 
//		[id = 10, name = Davis]=[id = 10, name = Davis, salary = 6500,00, city = Hammond]
//	}

Find/Search Key-Value Pair in Java TreeMap

Following the example, We use a set of TreeMap functionalities:

- ceilingEntry(K key):
-> returns a key-value mapping associated with the least key greater than or equal to the given key, or null if there is no such key.

- ceilingKey(K key):
-> returns the least key greater than or equal to the given key, or null if there is no such key.

- containsKey(Object key):
-> returns true if this map contains a mapping for the specified key.

- containsValue(Object value):
-> returns true if this map maps one or more keys to the specified value.

- firstEntry():
-> returns a key-value mapping associated with the least key in this map, or null if the map is empty.

- firstKey():
-> returns the first (lowest) key currently in this map.

- floorEntry(K key):
-> returns a key-value mapping associated with the greatest key less than or equal to the given key, or null if there is no such key.

- floorKey(K key):
-> returns the greatest key less than or equal to the given key, or null if there is no such key.

- get(Object key):
-> returns the value to which the specified key is mapped, or null if this map contains no mapping for the key.

- lastEntry():
-> Returns a key-value mapping associated with the greatest key in this map, or null if the map is empty.

- lastKey():
-> Returns the last (highest) key currently in this map.

- lowerEntry(K key):
-> Returns a key-value mapping associated with the greatest key strictly less than the given key, or null if there is no such key.

- lowerKey(K key):
-> Returns the greatest key strictly less than the given key, or null if there is no such key.

Example:

TreeMap numberMap = new TreeMap();

numberMap.put(1, "one");
numberMap.put(9, "nine");
numberMap.put(5, "five");
numberMap.put(2, "two");
numberMap.put(7, "seven");
numberMap.put(4, "four");

Entry keyValue = numberMap.ceilingEntry(6);
System.out.println(keyValue); // 7=seven

Integer key = numberMap.ceilingKey(6);
System.out.println(key); // 7

boolean c =numberMap.containsKey(6);
System.out.println(c); // false

c = numberMap.containsValue("seven");
System.out.println(c); // true

keyValue = numberMap.firstEntry();
System.out.println(keyValue); // 1=one

Integer firstKey = numberMap.firstKey();
System.out.println(firstKey); // 1

keyValue = numberMap.floorEntry(6);
System.out.println(keyValue); // 5=five

key = numberMap.floorKey(6);
System.out.println(key); // 5

String value = numberMap.get(5);
System.out.println(value); // five

keyValue = numberMap.lastEntry();
System.out.println(keyValue); // 9=nine

key = numberMap.lastKey();
System.out.println(key); // 9

keyValue = numberMap.lowerEntry(9);
System.out.println(keyValue); // 7=seven

key = numberMap.lowerKey(9);
System.out.println(key); // 7

Modify/Remove Entries of Java TreeMap

List of method APIs to modify and remove entries of Java TreeMap Collection:

- pollFirstEntry(): Removes and returns a key-value mapping associated with the least key in this map, or null if the map is empty.
- pollLastEntry(): Removes and returns a key-value mapping associated with the greatest key in this map, or null if the map is empty.
- put(K key, V value): Associates the specified value with the specified key in this map.
- putAll(Map map): Copies all of the mappings from the specified map to this map.

Example:

TreeMap numberMap = new TreeMap();

numberMap.put(1, "one");
numberMap.put(9, "nine");
numberMap.put(5, "five");
numberMap.put(2, "two");
numberMap.put(7, "seven");
numberMap.put(4, "four");

numberMap.pollFirstEntry();

System.out.println(numberMap); 
// {2=two, 4=four, 5=five, 7=seven, 9=nine}

numberMap.pollLastEntry();

System.out.println(numberMap);
// {2=two, 4=four, 5=five, 7=seven}

numberMap.put(2, "TWO");

System.out.println(numberMap);
// {2=TWO, 4=four, 5=five, 7=seven}

TreeMap addingNumberMap = new TreeMap();
addingNumberMap.put(10, "ten");
addingNumberMap.put(11, "eleven");

numberMap.putAll(addingNumberMap);

System.out.println(numberMap);
// {2=TWO, 4=four, 5=five, 7=seven, 10=ten, 11=eleven}

Getting a View of Java TreeMap

List of method APIs to get a view portion of Java TreeMap:

- descendingKeySet():
-> Returns a reverse order NavigableSet view of the keys contained in this map.

- descendingMap():
-> Returns a Set view of the mappings contained in this map.

- headMap(K toKey):
-> Returns a view of the portion of this map whose keys are strictly less than toKey.

- headMap(K toKey, boolean inclusive):
-> Returns a view of the portion of this map whose keys are less than (or equal to, if inclusive is true) toKey.

- subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive):
-> Returns a view of the portion of this map whose keys range from fromKey to toKey.

- subMap(K fromKey, K toKey):
-> Returns a view of the portion of this map whose keys range from fromKey, inclusive, to toKey, exclusive.

- tailMap(K fromKey):
-> Returns a view of the portion of this map whose keys are greater than or equal to fromKey.

- tailMap(K fromKey, boolean inclusive)
-> Returns a view of the portion of this map whose keys are greater than (or equal to, if inclusive is true) fromKey.

- values():
-> Returns a Collection view of the values contained in this map.

Example:

TreeMap numberMap = new TreeMap();

numberMap.put(1, "one");
numberMap.put(9, "nine");
numberMap.put(5, "five");
numberMap.put(2, "two");
numberMap.put(7, "seven");
numberMap.put(4, "four");

NavigableSet descendingKeySet = numberMap.descendingKeySet();
System.out.println(descendingKeySet);
// [9, 7, 5, 4, 2, 1]

NavigableMap descendingMap = numberMap.descendingMap();
System.out.println(descendingMap);
// {9=nine, 7=seven, 5=five, 4=four, 2=two, 1=one}

SortedMap headMap = numberMap.headMap(9);
System.out.println(headMap);
// {1=one, 2=two, 4=four, 5=five, 7=seven}

NavigableMap subMap = numberMap.subMap(2, false, 9, true);
System.out.println(subMap);
// {4=four, 5=five, 7=seven, 9=nine}

SortedMap tailMap = numberMap.tailMap(5);
System.out.println(tailMap);
// {5=five, 7=seven, 9=nine}

tailMap = numberMap.tailMap(5, false);
System.out.println(tailMap);
// {7=seven, 9=nine}

Collection values = numberMap.values();
System.out.println(values);
// [one, two, four, five, seven, nine]

Conclusion

We had learned how to use Java TreeMap by examples:

  • Explore Java TreeMap hierarchy.
  • How to construct Java TreeMap with difference constructors.
  • Create Java TreeMap and through almost Java TreeMap's method APIs.

Happy Learning! See you later!

126 thoughts on “How to use Java TreeMap with Examples”

  1. I like the helpful information you provide on your articles. I抣l bookmark your weblog and check once more right here regularly. I am rather sure I will learn plenty of new stuff right here! Best of luck for the following!

  2. The next time I read a blog, I hope that it doesnt disappoint me as much as this one. I mean, I know it was my choice to read, but I actually thought youd have something interesting to say. All I hear is a bunch of whining about something that you could fix if you werent too busy looking for attention.

  3. Great ?I should definitely pronounce, impressed with your site. I had no trouble navigating through all tabs and related info ended up being truly easy to do to access. I recently found what I hoped for before you know it in the least. Reasonably unusual. Is likely to appreciate it for those who add forums or something, site theme . a tones way for your client to communicate. Nice task..

  4. Once I originally commented I clicked the -Notify me when new feedback are added- checkbox and now every time a comment is added I get four emails with the same comment. Is there any manner you possibly can remove me from that service? Thanks!

  5. Thanks for making the trustworthy attempt to discuss this. I believe very strong approximately it and would like to learn more. If it’s OK, as you achieve extra extensive knowledge, may you mind including more articles very similar to this one with more information? It might be extraordinarily helpful and helpful for me and my friends.

  6. ———??????????????????———-. . ******* New Style Of Music On My Channel *******. . _____***ENJOY* MY* MUSIC***_____. . ——–??????????????????———- WELCOME ENRIQUE

  7. I’ve learn several just right stuff here. Certainly value bookmarking for revisiting. I surprise how much effort you put to create the sort of excellent informative web site.

  8. Real estate is very market specific and if you invest correctly, by city, geographical area within the city and even to individual neighborhoods and streets you can make quite a bit of money. Another great option is to encourage your customers to follow you on Twitter.

  9. It’s a shame you don’t have a donate button! I’d most certainly donate to this excellent blog! I guess for now i’ll settle for book-marking and adding your RSS feed to my Google account. I look forward to fresh updates and will talk about this site with my Facebook group. Chat soon!

  10. Can I simply say what a relief to seek out somebody who really is aware of what theyre speaking about on the internet. You undoubtedly know the best way to bring a problem to mild and make it important. Extra people need to learn this and perceive this aspect of the story. I cant believe youre not more widespread since you positively have the gift.

  11. Definitely believe that which you said. Your favorite justification appeared to be on the web the easiest thing to be aware of. I say to you, I certainly get annoyed while people think about worries that they plainly don’t know about. You managed to hit the nail upon the top and defined out the whole thing without having side effect , people could take a signal. Will probably be back to get more. Thanks

  12. Excellent blog you have here but I was curious about if you knew of any message boards that cover the same topics discussed in this article? I’d really love to be a part of group where I can get feedback from other knowledgeable individuals that share the same interest. If you have any recommendations, please let me know. Thanks!

  13. 307604 50900You completed numerous good points there. I did a search on the concern and located practically all people will have the same opinion along with your weblog. 839178

  14. I’ve read some excellent stuff here. Definitely price bookmarking for revisiting. I wonder how so much effort you put to make this sort of fantastic informative site.

  15. The very root of your writing while appearing agreeable at first, did not sit very well with me after some time. Somewhere within the sentences you were able to make me a believer but only for a very short while. I still have a problem with your jumps in assumptions and you might do nicely to fill in all those gaps. In the event that you can accomplish that, I could surely end up being impressed.

  16. I will immediately grasp your rss as I can not find your e-mail subscription link or newsletter service. Do you have any? Kindly let me understand in order that I may subscribe. Thanks.

  17. I am curious to find out what blog system you have been using? I’m experiencing some small security issues with my latest website and I would like to find something more safe. Do you have any suggestions?

  18. I know this if off topic but I’m looking into starting my own blog and was wondering what all is needed to get set up? I’m assuming having a blog like yours would cost a pretty penny? I’m not very web smart so I’m not 100 positive. Any suggestions or advice would be greatly appreciated. Thank you

  19. Wonderful website. Lots of helpful information here. I?¦m sending it to some buddies ans also sharing in delicious. And of course, thank you in your sweat!

  20. I am really enjoying the theme/design of your blog. Do you ever run into any browser compatibility issues? A number of my blog readers have complained about my website not operating correctly in Explorer but looks great in Firefox. Do you have any suggestions to help fix this issue?

  21. Nice post. I was checking constantly this blog and I’m impressed! Very useful information specially the last part 🙂 I care for such information much. I was seeking this certain info for a very long time. Thank you and good luck.

  22. It?¦s really a cool and useful piece of info. I am happy that you shared this useful info with us. Please keep us up to date like this. Thanks for sharing.

  23. you’re truly a just right webmaster. The site loading pace is incredible. It seems that you are doing any unique trick. In addition, The contents are masterwork. you have performed a excellent job on this subject!

  24. Thank you for another wonderful post. Where else could anyone get that type of info in such an ideal way of writing? I’ve a presentation next week, and I am on the look for such information.

  25. Great post. I was checking constantly this blog and I am impressed! Extremely helpful information specifically the final section 🙂 I deal with such information a lot. I was seeking this particular info for a very lengthy time. Thank you and good luck.

  26. Hello, Neat post. There’s an issue together with your site in web explorer, could check this?K IE nonetheless is the marketplace chief and a huge part of other people will omit your wonderful writing because of this problem.

  27. Thanks a lot for sharing this with all people you really know what you are speaking about! Bookmarked. Kindly additionally visit my site =). We may have a link change contract among us!

  28. I have been exploring for a bit for any high quality articles or weblog posts in this sort of house . Exploring in Yahoo I eventually stumbled upon this web site. Reading this info So i am glad to convey that I’ve a very just right uncanny feeling I came upon just what I needed. I so much no doubt will make certain to don?¦t overlook this website and provides it a glance on a constant basis.

  29. An fascinating discussion is worth comment. I feel that it’s best to write more on this subject, it won’t be a taboo subject however usually people are not enough to speak on such topics. To the next. Cheers

  30. Excellent beat ! I wish to apprentice whilst you amend your site, how can i subscribe for a blog website? The account aided me a acceptable deal. I were tiny bit acquainted of this your broadcast provided bright transparent idea

  31. I have been browsing online more than three hours nowadays, but I by no means found any attention-grabbing article like yours. It¦s pretty price enough for me. In my opinion, if all web owners and bloggers made good content as you did, the web will probably be a lot more helpful than ever before.

  32. you are really a good webmaster. The site loading speed is amazing. It seems that you’re doing any unique trick. Moreover, The contents are masterwork. you have done a magnificent job on this topic!

  33. Sweet blog! I found it while browsing on Yahoo News. Do you have any tips on how to get listed in Yahoo News? I’ve been trying for a while but I never seem to get there! Many thanks

  34. I loved as much as you’ll receive carried out right here.
    The sketch is tasteful, your authored material stylish.
    nonetheless, you command get bought an edginess over that you wish be delivering the following.
    unwell unquestionably come more formerly again since exactly the same nearly a lot often inside case you shield this increase.

  35. Howdy very cool website!! Man .. Beautiful .. Amazing .. I will bookmark your blog and take the feeds additionally…I’m happy to find a lot of useful info here in the submit, we’d like develop more techniques on this regard, thanks for sharing.

  36. What i do not understood is if truth be told how you are no longer actually a lot more smartly-favored than you might be now. You’re so intelligent. You know thus significantly with regards to this subject, made me in my view imagine it from so many varied angles. Its like men and women don’t seem to be interested unless it¦s something to accomplish with Girl gaga! Your personal stuffs great. Always deal with it up!

  37. I know this if off topic but I’m looking into starting my own weblog and was wondering what all is needed to get set up? I’m assuming having a blog like yours would cost a pretty penny? I’m not very web savvy so I’m not 100 positive. Any recommendations or advice would be greatly appreciated. Kudos

  38. You could certainly see your expertise in the paintings you write. The sector hopes for more passionate writers such as you who aren’t afraid to say how they believe. Always follow your heart. “Until you’ve lost your reputation, you never realize what a burden it was.” by Margaret Mitchell.

  39. Thank you for any other informative web site. Where else could I am getting that kind of info written in such an ideal approach? I’ve a undertaking that I’m simply now working on, and I have been on the look out for such info.

  40. We’re a bunch of volunteers and starting a new scheme in our community. Your site provided us with useful information to paintings on. You’ve performed an impressive process and our entire community might be thankful to you.

  41. I’m truly enjoying the design and layout of your site. It’s a very easy on the eyes which makes it much more enjoyable for me to come here and visit more often. Did you hire out a designer to create your theme? Exceptional work!

  42. Have you ever thought about publishing an e-book or guest authoring on other sites? I have a blog based on the same information you discuss and would love to have you share some stories/information. I know my visitors would value your work. If you are even remotely interested, feel free to shoot me an e-mail.

  43. Hello very cool web site!! Guy .. Beautiful .. Wonderful .. I will bookmark your website and take the feeds also…I’m satisfied to seek out so many helpful information here within the submit, we’d like develop more strategies in this regard, thank you for sharing. . . . . .

  44. I have read several excellent stuff here. Certainly value bookmarking for revisiting. I surprise how much attempt you set to create this sort of excellent informative site.

  45. Hey, you used to write fantastic, but the last several posts have been kinda boring?K I miss your tremendous writings. Past few posts are just a bit out of track! come on!

  46. Its like you read my mind! You appear to know a lot about this, like you wrote the book in it or something. I think that you can do with a few pics to drive the message home a bit, but instead of that, this is great blog. An excellent read. I will definitely be back.

  47. Hey! This post could not be written any better! Reading this post reminds me of my previous room mate! He always kept talking about this. I will forward this article to him. Fairly certain he will have a good read. Thanks for sharing!

  48. What i don’t understood is if truth be told how you’re now not really a lot more smartly-liked than you might be right now. You are very intelligent. You understand thus significantly in terms of this topic, made me personally consider it from numerous varied angles. Its like women and men don’t seem to be interested except it’s one thing to accomplish with Lady gaga! Your individual stuffs nice. All the time deal with it up!

  49. Nice post. I was checking constantly this blog and I’m impressed! Very helpful info specifically the last part 🙂 I care for such info much. I was seeking this certain info for a very long time. Thank you and good luck.

  50. Hi there just wanted to give you a quick heads up. The words in your post seem to be running off the screen in Internet explorer. I’m not sure if this is a format issue or something to do with internet browser compatibility but I figured I’d post to let you know. The layout look great though! Hope you get the issue solved soon. Thanks

  51. I think this is one of the most vital info for me. And i am glad reading your article. But should remark on some general things, The site style is wonderful, the articles is really great : D. Good job, cheers

  52. I was recommended this blog by my cousin. I am not sure whether this post is written by him as nobody else know such detailed about my difficulty. You are amazing! Thanks!

  53. You really make it seem so easy with your presentation but I find this matter to be really something that I think I would never understand. It seems too complex and very broad for me. I am looking forward for your next post, I will try to get the hang of it!

  54. You really make it seem so easy with your presentation but I find this topic to be actually something which I think I would never understand. It seems too complex and extremely broad for me. I’m looking forward for your next post, I’ll try to get the hang of it!

Leave a Reply

Your email address will not be published. Required fields are marked *