A cautionary tale: not all TreeSets are equal, but some are more equal than others.pic.twitter.com/mMC4bVJFwe
Supporting Scala through professional training and open-source software. Responsible for Magnolia, Fury, Scala World and Functional Africa.
You can add location information to your Tweets, such as your city or precise location, from the web and via third-party applications. You always have the option to delete your Tweet location history. Learn more
Add this Tweet to your website by copying the code below. Learn more
Add this video to your website by copying the code below. Learn more
By embedding Twitter content in your website or app, you are agreeing to the Twitter Developer Agreement and Developer Policy.
| Country | Code | For customers of |
|---|---|---|
| United States | 40404 | (any) |
| Canada | 21212 | (any) |
| United Kingdom | 86444 | Vodafone, Orange, 3, O2 |
| Brazil | 40404 | Nextel, TIM |
| Haiti | 40404 | Digicel, Voila |
| Ireland | 51210 | Vodafone, O2 |
| India | 53000 | Bharti Airtel, Videocon, Reliance |
| Indonesia | 89887 | AXIS, 3, Telkomsel, Indosat, XL Axiata |
| Italy | 4880804 | Wind |
| 3424486444 | Vodafone | |
| » See SMS short codes for other countries | ||
This timeline is where you’ll spend most of your time, getting instant updates about what matters to you.
Hover over the profile pic and click the Following button to unfollow any account.
When you see a Tweet you love, tap the heart — it lets the person who wrote it know you shared the love.
The fastest way to share someone else’s Tweet with your followers is with a Retweet. Tap the icon to send it instantly.
Add your thoughts about any Tweet with a Reply. Find a topic you’re passionate about, and jump right in.
Get instant insight into what people are talking about now.
Follow more accounts to get instant updates about topics you care about.
See the latest conversations about any topic instantly.
Catch up instantly on the best stories happening as they unfold.
A cautionary tale: not all TreeSets are equal, but some are more equal than others.pic.twitter.com/mMC4bVJFwe
What's going on here? Did you look under the hood?
I didn't need to look... what it's doing is as reasonable as what I'm doing is unreasonable: the Ordering I created considers there to be no difference in order between two Foos with the same id. The logic inside TreeSet uses that to equality-of-order to infer equality.
In terms of efficiency, that's a reasonable thing to do because the Ordering and an equals method may both be expensive and should probably do the same thing.
But in my real-world use-case I was exploiting this as a convenient way of guaranteeing I never had two elements with the same ID in the same TreeSet (and giving the TreeSet's append method "replace semantics" for free).
It feels like that should be done by passing in an alternative equals rather than order Feels weird to me
I went with a four-line fix which special-cases TreeSet in a pattern match for the one equality check I care about this for. I'm not entirely happy with the solution, but it works.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.