Comments (8)
That would be awesome for me. And based on my week of searching for "golang ordered map JSON marshal unmarshal", I think it would be awesome for a lot of other people as well.
Thank you!
from gods.
In short: no. If you use a comparator that orders by insertion time then you would have to look up by insertion time as well.
I would use a slice or a doubly linked list to store the items ordered by insertion in a queue-like fashion. You could then use a map to to store indices into the slice or a pointer to the linked list node. You can then do constant time lookup and in the case of the linked list constant time removal. You iterate through the slice or linked list to get an insertion ordered loop.
from gods.
My problem is that I don't do the insertions; json.Unmarshal() does. As currently written, the struct it unmarshals into uses a map[string]interface{}, which is ordered. So I need to replace that with a type that 1) supports json.Unmarshal() (and json.Marshal() ) transparently, and 2) maintains insertion order.
I see that the gods map types fully support the JSON interface, so that seems promising. I was hoping that one already spuported maintaining the insertion order, but that does not appear to be the case. I will take a look at the source to see how difficult it would be to adapt HashMap to do this.
Thanks.
from gods.
As @spewspews mentioned, that structure hasn't yet been implemented and I think it would be a nice addition to GoDS. It's fairly easy to implement and, once implemented, the JSON serialization/deserialization would be in that (insertion) order.
I hope to have it ready this weekend, i.e. LinkedHashMap and LinkedHashSet that maintain the insertion order.
from gods.
Have you made any progress on this? I'd love to try out anything that you have.
Thanks again!
from gods.
any progress?
from gods.
@chrischris292 unfortunately not, i'm time-limited due to recent fatherhood. i have to take a day or two one of these weekends to clean up pull requests and implement requested features.
from gods.
@MartinDelVecchio @chrischris292 sorry it took so long, but I finally found some time for this
Map data structure preserving the insertion-order.
LinkedHashMap
Set data structure preserving the insertion-order.
LinkedHashSet
from gods.
Related Issues (20)
- I would like to know how to delete a node data while treemap loop read. I want to know where is my code wrong? HOT 2
- Add to Go official wiki? HOT 3
- generic upgrade request HOT 3
- RedBlackTree: Iterators become invalid after removing an element. HOT 2
- DS which can give element if present or next greater if not present, elements should be stored in sorted order HOT 2
- LinkedHashMap Sort? HOT 3
- Multiset support
- deque support
- hashset should support NewWith Comparator
- Add method of Set lack info about the insert take place or not
- treeset:The names of each element are not equal, why is second_8 disappearing? HOT 1
- godslist.js refrence in chrome 120.0.6099.225 console
- Add elements of a slice [] T
- Red black tree: Unresolved reference 'NewWithIntComparator'
- Red black tree: package cmp is not in GOROOT (/usr/lib/golang/src/cmp)
- Interfaces support any types HOT 4
- Why cannot index priorityqueue.NewWith (value of type func(comparator utils.Comparator) *priorityqueue.Queue)? HOT 1
- A issue In BinaryHeap
- linkedhashmap json.Marshal error HOT 1
- treeset json.Unmarshal error HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gods.