You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:28:27