You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Alex Herbert (Jira)" <ji...@apache.org> on 2022/10/17 12:25:00 UTC

[jira] [Commented] (TEXT-219) StringTokenizer#getTokenList does not support #remove

    [ https://issues.apache.org/jira/browse/TEXT-219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17618865#comment-17618865 ] 

Alex Herbert commented on TEXT-219:
-----------------------------------

Thanks for the bug report.

The method now uses:
{code:java}
// Gets a copy of the full token list as an independent modifiable list.
public List<String> getTokenList() {
    // ... 
    return Arrays.asList(tokens);
}{code}
Thus a second bug is that the returned List set method will change the backing array.

For example this will modify the token order:
{code:java}
StringTokenizer st = ...;

Collections.shuffle(st.getTokenList());
{code}
Please feel free to raise a PR on Github with a test and fix, e.g. return new ArrayList<>(Arrays.asList(tokens)).

> StringTokenizer#getTokenList does not support #remove
> -----------------------------------------------------
>
>                 Key: TEXT-219
>                 URL: https://issues.apache.org/jira/browse/TEXT-219
>             Project: Commons Text
>          Issue Type: Bug
>    Affects Versions: 1.10.0
>            Reporter: Jaap Sperling
>            Priority: Major
>
> Upgraded to 1.10 from 1.9 and the {{StringTokenizer#getTokenList}} method now returns an {{Arrays$ArrayList}} instead of a regular {{{}ArrayList{}}}.
> This causes calls to #add and #remove to throw UnsupportedOperationExceptions, even if the documentation states this returns modifiable lists



--
This message was sent by Atlassian Jira
(v8.20.10#820010)