712 |
|
} |
713 |
|
|
714 |
|
/** |
715 |
< |
* Return the TreeNode (or null if not found) for the given key |
715 |
> |
* Returns the TreeNode (or null if not found) for the given key |
716 |
|
* starting at given root. |
717 |
|
*/ |
718 |
|
@SuppressWarnings("unchecked") // suppress Comparable cast warning |
2327 |
|
} |
2328 |
|
|
2329 |
|
public final void remove() { |
2330 |
< |
if (nextVal == null) |
2330 |
> |
if (nextVal == null && last == null) |
2331 |
|
advance(); |
2332 |
|
Node e = last; |
2333 |
|
if (e == null) |
2657 |
|
* |
2658 |
|
* @param key key with which the specified value is to be associated |
2659 |
|
* @param remappingFunction the function to compute a value |
2660 |
< |
* @return the new value associated with |
2661 |
< |
* the specified key, or null if none. |
2660 |
> |
* @return the new value associated with the specified key, or null if none |
2661 |
|
* @throws NullPointerException if the specified key or remappingFunction |
2662 |
|
* is null |
2663 |
|
* @throws IllegalStateException if the computation detectably |
2703 |
|
* |
2704 |
|
* @param key key with which the specified value is to be associated |
2705 |
|
* @param remappingFunction the function to compute a value |
2706 |
< |
* @return the new value associated with |
2708 |
< |
* the specified key, or null if none. |
2706 |
> |
* @return the new value associated with the specified key, or null if none |
2707 |
|
* @throws NullPointerException if the specified key or remappingFunction |
2708 |
|
* is null |
2709 |
|
* @throws IllegalStateException if the computation detectably |
2896 |
|
} |
2897 |
|
|
2898 |
|
/** |
2899 |
< |
* Returns a partionable iterator of the keys in this map. |
2899 |
> |
* Returns a partitionable iterator of the keys in this map. |
2900 |
|
* |
2901 |
< |
* @return a partionable iterator of the keys in this map |
2901 |
> |
* @return a partitionable iterator of the keys in this map |
2902 |
|
*/ |
2903 |
|
public Spliterator<K> keySpliterator() { |
2904 |
|
return new KeyIterator<K,V>(this); |
2905 |
|
} |
2906 |
|
|
2907 |
|
/** |
2908 |
< |
* Returns a partionable iterator of the values in this map. |
2908 |
> |
* Returns a partitionable iterator of the values in this map. |
2909 |
|
* |
2910 |
< |
* @return a partionable iterator of the values in this map |
2910 |
> |
* @return a partitionable iterator of the values in this map |
2911 |
|
*/ |
2912 |
|
public Spliterator<V> valueSpliterator() { |
2913 |
|
return new ValueIterator<K,V>(this); |
2914 |
|
} |
2915 |
|
|
2916 |
|
/** |
2917 |
< |
* Returns a partionable iterator of the entries in this map. |
2917 |
> |
* Returns a partitionable iterator of the entries in this map. |
2918 |
|
* |
2919 |
< |
* @return a partionable iterator of the entries in this map |
2919 |
> |
* @return a partitionable iterator of the entries in this map |
2920 |
|
*/ |
2921 |
|
public Spliterator<Map.Entry<K,V>> entrySpliterator() { |
2922 |
|
return new EntryIterator<K,V>(this); |
3748 |
|
} |
3749 |
|
|
3750 |
|
/** |
3751 |
< |
* Performs the given action for each key |
3751 |
> |
* Performs the given action for each key. |
3752 |
|
* |
3753 |
|
* @param action the action |
3754 |
|
*/ |
3759 |
|
|
3760 |
|
/** |
3761 |
|
* Performs the given action for each non-null transformation |
3762 |
< |
* of each key |
3762 |
> |
* of each key. |
3763 |
|
* |
3764 |
|
* @param transformer a function returning the transformation |
3765 |
|
* for an element, or null of there is no transformation (in |
3878 |
|
} |
3879 |
|
|
3880 |
|
/** |
3881 |
< |
* Performs the given action for each value |
3881 |
> |
* Performs the given action for each value. |
3882 |
|
* |
3883 |
|
* @param action the action |
3884 |
|
*/ |
3889 |
|
|
3890 |
|
/** |
3891 |
|
* Performs the given action for each non-null transformation |
3892 |
< |
* of each value |
3892 |
> |
* of each value. |
3893 |
|
* |
3894 |
|
* @param transformer a function returning the transformation |
3895 |
|
* for an element, or null of there is no transformation (in |
4007 |
|
} |
4008 |
|
|
4009 |
|
/** |
4010 |
< |
* Perform the given action for each entry |
4010 |
> |
* Performs the given action for each entry. |
4011 |
|
* |
4012 |
|
* @param action the action |
4013 |
|
*/ |
4017 |
|
} |
4018 |
|
|
4019 |
|
/** |
4020 |
< |
* Perform the given action for each non-null transformation |
4021 |
< |
* of each entry |
4020 |
> |
* Performs the given action for each non-null transformation |
4021 |
> |
* of each entry. |
4022 |
|
* |
4023 |
|
* @param transformer a function returning the transformation |
4024 |
|
* for an element, or null of there is no transformation (in |
4302 |
|
|
4303 |
|
/** |
4304 |
|
* Returns a task that when invoked, performs the given action |
4305 |
< |
* for each key |
4305 |
> |
* for each key. |
4306 |
|
* |
4307 |
|
* @param map the map |
4308 |
|
* @param action the action |
4317 |
|
|
4318 |
|
/** |
4319 |
|
* Returns a task that when invoked, performs the given action |
4320 |
< |
* for each non-null transformation of each key |
4320 |
> |
* for each non-null transformation of each key. |
4321 |
|
* |
4322 |
|
* @param map the map |
4323 |
|
* @param transformer a function returning the transformation |
4374 |
|
return new ReduceKeysTask<K,V> |
4375 |
|
(map, reducer); |
4376 |
|
} |
4377 |
+ |
|
4378 |
|
/** |
4379 |
|
* Returns a task that when invoked, returns the result of |
4380 |
|
* accumulating the given transformation of all keys using the given |
4471 |
|
|
4472 |
|
/** |
4473 |
|
* Returns a task that when invoked, performs the given action |
4474 |
< |
* for each value |
4474 |
> |
* for each value. |
4475 |
|
* |
4476 |
|
* @param map the map |
4477 |
|
* @param action the action |
4485 |
|
|
4486 |
|
/** |
4487 |
|
* Returns a task that when invoked, performs the given action |
4488 |
< |
* for each non-null transformation of each value |
4488 |
> |
* for each non-null transformation of each value. |
4489 |
|
* |
4490 |
|
* @param map the map |
4491 |
|
* @param transformer a function returning the transformation |
4639 |
|
|
4640 |
|
/** |
4641 |
|
* Returns a task that when invoked, perform the given action |
4642 |
< |
* for each entry |
4642 |
> |
* for each entry. |
4643 |
|
* |
4644 |
|
* @param map the map |
4645 |
|
* @param action the action |
4653 |
|
|
4654 |
|
/** |
4655 |
|
* Returns a task that when invoked, perform the given action |
4656 |
< |
* for each non-null transformation of each entry |
4656 |
> |
* for each non-null transformation of each entry. |
4657 |
|
* |
4658 |
|
* @param map the map |
4659 |
|
* @param transformer a function returning the transformation |
4810 |
|
|
4811 |
|
/** |
4812 |
|
* Base for FJ tasks for bulk operations. This adds a variant of |
4813 |
< |
* CountedCompleters and some split and merge bookeeping to |
4813 |
> |
* CountedCompleters and some split and merge bookkeeping to |
4814 |
|
* iterator functionality. The forEach and reduce methods are |
4815 |
|
* similar to those illustrated in CountedCompleter documentation, |
4816 |
|
* except that bottom-up reduction completions perform them within |
4841 |
|
// FJ methods |
4842 |
|
|
4843 |
|
/** |
4844 |
< |
* Propagate completion. Note that all reduce actions |
4844 |
> |
* Propagates completion. Note that all reduce actions |
4845 |
|
* bypass this method to combine while completing. |
4846 |
|
*/ |
4847 |
|
final void tryComplete() { |
4859 |
|
} |
4860 |
|
|
4861 |
|
/** |
4862 |
< |
* Force root task to throw exception unless already complete. |
4862 |
> |
* Forces root task to throw exception unless already complete. |
4863 |
|
*/ |
4864 |
|
final void tryAbortComputation(Throwable ex) { |
4865 |
|
for (BulkTask<K,V,?> a = this;;) { |
4892 |
|
} |
4893 |
|
|
4894 |
|
/** |
4895 |
< |
* Return approx exp2 of the number of times (minus one) to |
4895 |
> |
* Returns approx exp2 of the number of times (minus one) to |
4896 |
|
* split task by two before executing leaf action. This value |
4897 |
|
* is faster to compute and more convenient to use as a guide |
4898 |
|
* to splitting than is the depth, since it is used while |
4915 |
|
"Unexpected null function"; |
4916 |
|
|
4917 |
|
/** |
4918 |
< |
* Return exportable snapshot entry |
4918 |
> |
* Returns exportable snapshot entry. |
4919 |
|
*/ |
4920 |
|
static <K,V> AbstractMap.SimpleEntry<K,V> entryFor(K k, V v) { |
4921 |
|
return new AbstractMap.SimpleEntry(k, v); |