Java按单词长度对String数组排序的技术求助
解决方案:按单词长度排序并分组打印
嘿,这个需求很明确,咱们分两步走:先把数组按单词长度从小到大排序,再按长度分组输出。下面给你Java和Python两种常用语言的实现代码,你可以根据自己的需求选择~
Java 实现
import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class WordLengthSorter { public static void main(String[] args) { // 替换成你自己的字符串数组 String[] wordArray = {"Joseph", "I", "Delete", "U", "K"}; // 1. 按单词长度从小到大排序 Arrays.sort(wordArray, Comparator.comparingInt(String::length)); // 2. 按长度分组存储 Map<Integer, List<String>> lengthGroupMap = new HashMap<>(); for (String word : wordArray) { int length = word.length(); // 如果当前长度的键不存在,就创建一个新的列表 lengthGroupMap.computeIfAbsent(length, k -> new ArrayList<>()).add(word); } // 3. 按长度顺序打印结果 lengthGroupMap.keySet().stream() .sorted() // 确保长度按从小到大输出 .forEach(length -> { List<String> words = lengthGroupMap.get(length); System.out.printf("%d: %s%n", length, String.join(", ", words)); }); } }
代码说明
- 排序部分用
Arrays.sort配合Comparator.comparingInt(String::length),简洁高效地实现按长度排序; - 分组用
HashMap,computeIfAbsent方法可以自动处理键不存在的情况,避免手动判断空值; - 最后通过流式API对键排序,保证输出的长度是从小到大的顺序。
Python 实现
# 替换成你自己的字符串数组 words = ["Joseph", "I", "Delete", "U", "K"] # 1. 按单词长度从小到大排序 sorted_words = sorted(words, key=lambda word: len(word)) # 2. 按长度分组存储 length_groups = {} for word in sorted_words: length = len(word) if length not in length_groups: length_groups[length] = [] length_groups[length].append(word) # 3. 按长度顺序打印结果 for length in sorted(length_groups.keys()): print(f"{length}: {', '.join(length_groups[length])}")
代码说明
- Python的
sorted函数可以通过key参数指定排序依据,这里用lambda表达式取单词长度; - 分组用普通字典,手动判断键是否存在来创建列表;
- 最后对字典的键排序后遍历,输出对应分组的单词。
运行上面的代码,就能得到你想要的输出:
1: I, U, K
6: Joseph, Delete
内容的提问来源于stack exchange,提问作者H. Woolverton
相关产品推荐
相关产品推荐

