![](/img/trans.png)
[英]What is the fastest way to set an arbitrary range of elements in a Java array to null?
[英]What's the fastest way to only rotate certain elements in an array?
我正在為字符串寫一個字形擾亂器,除了第一個和最后一個字母之外,它們都會旋轉它們的位置。 但是,我應該只看第二到第二個字母。 我怎么才能從最后一封信到最后一封信?
例如,將“string”爭奪到“srintg”
我可以在通過拆分字符串創建的字符數組上調用Collections.rotate(),但這會擾亂整個單詞。
List<String> newWordList = Arrays.asList(word.split(" "));
Collections.rotate(newWordList, -1);
String newWord = String.join("", newWordList);
我想得到輸出“srintg”,但我會得到“rintgs”。
如果您的單詞足夠長以使其合理(至少四個字母),您可以通過旋轉列表的子列表來使您呈現的方法起作用:
Collections.rotate(newWordList.subList(1, newWordList.size() - 1), -1);
List.subList()
創建List
列表的一部分的視圖,其確切目的是避免使用對元素的索引子范圍進行操作的版本重載List
方法。 在快速寫入的意義上,這是“快速的”,而且相當清楚。
但是,如果你在性能意義上尋找“快速”,那么拆分和連接字符串似乎是不明智的。 快速est可能不是我們可以提供的東西,因為性能需要測試,但如果我正在尋找最佳性能,那么我將測試至少這些一般方法:
String.toCharArray()
以數組形式獲取單詞的字母。 for
循環旋轉數組中的字符。 String
(使用適當的構造函數)。 StringBuilder
來組合單詞
StringBuilder
。 CharacterIterator
迭代單詞的字母,按所需順序將它們附加到構建器。 這可以一次完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.