From charlesreid1

Guava is a Java library of high-performance collections and data containers. It was made and is maintained by Google.

The story behind Guava is, Google basically hired the author of the Java Collections API to go nuts and build a Collections++ library.

Google Guava on Github:


Jar File

Probably the easiest way to install Guava is to use the Guava jar file. You can find the link to Guava distributed as a Jar file on the Guava wiki on Github:

Using the Jar file depends on your environment, most IDEs have an easy way to add Jar files to a project.

If you're compiling by command line, you'll need to specify the Java class path and point Java to the location of your Jar files.

Class Path

To pass a custom class path with the location of your Guava jar files to the compiler,

$ javac -cp '.:/path/to/guava/jars/guava-21.0.jar'

Then run Java with the same flag:

$ java -cp '.:/path/to/guava/jars/guava-21.0.jar' TSP


Put the above in a Makefile for more convenience:

CP=-cp '.:$(GUAVA)'

	javac $(CP) $(TARGET) 

	# If no size, use default
	java $(CP) $(BIN) 

	rm -rf *.class

.PHONY: clean

tsp: clean build run


Predicates are conditions that must be true for an action to be taken. See Guava Predicates page.



The Maps class contains many, many static utility methods for Map classes. See Guava Maps for more.


This is the analog of Maps, but for the List type.

Stacks and Queues

These are the analogues of Maps, but for the Stack and Queue types.



Getting Endpoint Nodes from an Edge

To get the nodes at either end of a node, you can use the incidentNode() function to go from an edge to the two endpoints of the edge.

The incidentNode() method returns an object called a EndpointPair class, defined by Guava. How you use it depends on whether you have a directed or an undirected graph.

Documentation on EndpointPair:

If you have a directed graph, you can use an edge to get the EndpointPair object, then call the source() and target() methods to get the nodes at the tail and head of the edge, resp.

If you have an undirected graph, you can use an edge to get the EndpointPair object, then call the nodeU() and nodeV() methods, which are basically equivalent to left and right.

Documentation on Network (see incidentNode method):

Examples of Guava in Action

Traveling Salesperson Problem

You can see some examples of Guava in action at the following links:


See also: