Is there a specific data structure, object oriented programming methodology, and/or approach for achieving what programs like LT Spice, Altium Designer, and Cadence Virtuoso use to manage components/nets/nodes on schematics? Specifically in Java?
Above is an example, a sample schematic from LT Spice. There are a bunch of components (in programming these might be objects?), and the red dots are called nodes in LT Spice (possibly nodes in programming also?), and the little blue dots surrounding each component are also nodes. They're all connected with wires. In the end, the program can simulate the circuit by relating each of the components and how they are connected to one another. And these components are likely stored in some data structure, like a tree or an array. How might a program like LT Spice store the components?
I have distilled the above electrical schematic into a simpler diagram that might help visualize what data structure could be used to hold the data, without the added confusion of EE material. The important thing to consider is, much like a schematic, the nodes can be in ANY combination that the user puts them into, and there can be infinitely more nodes than what is depicted (within reason and computing capabilities), just as some electronic circuits contain thousands of components and one node might be shared with half a dozen other components. So, the example I'm showing is only for one specific case where we can see one type of data structure might not work, such as a binary tree. All of the circles are a node.
So again, is there a specific data structure or OOP methodology that would best store a mutable web of interconnected data, such as the ones found in electronic schematic software programs?