-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
List interface lacks simple remove(index) method #947
Comments
Removed Type-Defect label. |
A proposal is to name the method removeAt(index) to be more clear this is "remove the object at this index" and not "find the object and then remove it |
cc @lrhn. |
Added Accepted label. |
+1, had to create my own "utils" with a "removeAt" method yet again ... |
Added this to the Later milestone. |
I hope Milestone-Later means Milestone-Soon though :). The collection APIs badly need a facelift |
also there was a request for "removeItem", which I think means remove(T item), essentially |
removeItem is dangerous in a List. It can mean either removeFirst or removeAll. I'd rather have both of those. |
@LRN: totally agree |
Clarity is good, but so is brevity, so I dislike making all the names longer so we can remove all possible ambiguities. It might be sufficiently non-confusing if one of them was just called remove. e.g. if there's a remove() and a removeAll(). |
+1 for remove()/removeAll(). It might be nice if remove() was in Collection so that you can have code that can generically remove from a List/Map/Set. In that case, removeFirst() isn't meaningful: what's the "first" matching item in a set? |
That also matches what we do with "query" and "queryAll" from the DOM |
This comment was originally written by @seaneagan I would say "removeAll" is the vast majority use case, and I could easily see someone assuming that "removeAll" takes a Collection of elements to remove from the receiver Collection. I think "removeFirst" is rare, and as jmesserly noted, easily written in terms of "indexOf", so I would leave it out, but if it's there, maybe call it "removeOne" in order to make it make sense for Sets as well. |
Interesting? I think that removeFirst is common and removeAll rare. Or, more particularly, I think that collections without duplicates is the most common case, so the two are equivalent and removeFirst is faster. And writing it in terms of indexOf every time is horrible. |
This comment was originally written by @seaneagan I totally agree that Collections without duplicates are the most common, |
I can see that removeAll will be confusing when compared with Set.removeAll. |
This comment was originally written by @seaneagan @LRN: sounds good to me. A couple things to consider if including a List#removeFirst: * should it take an optional "startIndex" parameter like "indexOf" does?
|
This comment was originally written by @seaneagan I just realized there is a different semantics for "removeFirst" proposed, see issue #604, so this one would might need to be "removeFirstOccurrence" or something. |
…buf, shelf, test, tools, vector_math, webdev Revisions updated by `dart tools/rev_sdk_deps.dart`. dartdoc (https://github.com/dart-lang/dartdoc/compare/59dc475..1d94484): 1d94484c 2023-05-29 dependabot[bot] Bump github/codeql-action from 2.3.3 to 2.3.5 (#3422) 0edc1a71 2023-05-28 dependabot[bot] Bump http from 0.13.6 to 1.0.0 (#3421) http (https://github.com/dart-lang/http/compare/dfec389..8a4a4a6): 8a4a4a6 2023-05-25 Brian Quinlan Add a better toString to _ClientSocketException (#948) 5c1f1ad 2023-05-25 Devon Carew regenerate with the latest mono_repo (#947) leak_tracker (https://github.com/dart-lang/leak_tracker/compare/9c6e9b3..7f2cab3): 7f2cab3 2023-05-26 Polina Cherkasova Nicely format retaining path. (#68) lints (https://github.com/dart-lang/lints/compare/72f107a..4236c43): 4236c43 2023-05-26 Parker Lougheed Remove pedantic from README (#124) 4ac79d8 2023-05-24 Parker Lougheed Update example for latest lints version (#123) mockito (https://github.com/dart-lang/mockito/compare/153c145..40fe2ca): 40fe2ca 2023-05-25 Nate Bosch Expand constraint on package:http native (https://github.com/dart-lang/native/compare/45e16dc..76bc55e): 76bc55e 2023-05-30 Daco Harkes [c_compiler] Target ios_x64 (#53) protobuf (https://github.com/dart-lang/protobuf/compare/7d2d293..346a72d): 346a72d 2023-05-30 Ömer Sinan Ağacan Fix generated ignore_for_file directives (#833) 35ea45f 2023-05-26 Kevin Moore Latest mono_repo (#834) shelf (https://github.com/dart-lang/shelf/compare/56919a1..a404b6a): a404b6a 2023-05-25 Devon Carew re-generate w/ the latest monorepo (#362) test (https://github.com/dart-lang/test/compare/309596e..3276921): 32769215 2023-05-25 dependabot[bot] Bump github/codeql-action from 2.3.2 to 2.3.5 (#2023) f74e85c8 2023-05-25 dependabot[bot] Bump dart-lang/setup-dart from 1.3.0 to 1.5.0 (#2022) 4b2bd272 2023-05-25 Devon Carew update the mono_repo and dependabot configs (#2021) tools (https://github.com/dart-lang/tools/compare/81ff996..b90a7e8): b90a7e8 2023-05-26 Devon Carew blast_repo fixes (#106) vector_math (https://github.com/google/vector_math.dart/compare/e3de8da..cd87f57): cd87f57 2023-05-30 JKris95 Axis calculation of quaternions from small angles (#272) 3762b25 2023-05-30 Lukas Klingsbo Removes the `new` keyword from readme (#284) df5877f 2023-05-30 Lukas Klingsbo Use named constructors in Vector2 and some general optimizations (#289) webdev (https://github.com/dart-lang/webdev/compare/d74fadd..4b69f1d): 4b69f1dd 2023-05-26 Anna Gringauze fix format breaking tests (#2124) b75f8e62 2023-05-25 Devon Carew re-generate w/ the latest monorepo (#2121) Change-Id: Ide9b7781102b654db15114d01cd4fbca40478906 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/306304 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Devon Carew <devoncarew@google.com>
Let's add a remove(index) method to List. Something like http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html#remove(int)
The text was updated successfully, but these errors were encountered: