BFS implementation in JAVA
Data structure
There is no such thing as a &quot;standard graph data structure.&quot; There are a few different data structures for representing a graph and you have implemented the adjacency list. The main problem with your implementation is that you have actually implemented the traversal algorithm and the data structure is just an &quot;accessory&quot; to it. It is not possible to extract the graph from the code and use it somewhere else so there is not much point in spending a lot of time reviewing the graph implementation as a data structure.
I would expect a graph data structrue to be encapsulated in a class named Graph (or an interface named Graph with implementations in classes like AdjacencyListGraph and AdjacencyMatrixGraph). The purpose of the encapsulation is to protect the data structure from manipulation which would break the data structure. For example, as you represent the adjacency as a Map&lt;Node, ArrayList&lt;Edge&gt;&gt; you allow a situation where a single edge could be assigned to two nodes, which would destroy your traversal algorithm.
Your Edge implementation is tightly bound to the traversal algorithm because you have placed the isExplored attribute to it. A pure graph implementation should not be concerned about how it is traversed.