如何在java中从最长字符串到最短字符串进行列表

如何在java中从最长字符串到最短字符串进行列表,java,Java,我正在制作一个minecraft mod菜单(在这里听起来更糟),我试图让字符串变量从最长到最短显示 即: “偷胸贼” “玩家ESP” “飞行” “速度” “盒子”等 这是我目前的代码: for(Module m : myClient.getModules()) { if(m.isToggled() && m.getName() != "Click GUI" ) { modules.add(m.getName());

我正在制作一个minecraft mod菜单(在这里听起来更糟),我试图让字符串变量从最长到最短显示 即: “偷胸贼” “玩家ESP” “飞行” “速度” “盒子”等

这是我目前的代码:

for(Module m : myClient.getModules())
    {
        if(m.isToggled() && m.getName() != "Click GUI" )
        {
            modules.add(m.getName());
            for(int i = 0; i < modules.size();i++)
            {
            int currentModule = i;
            for(int j = 0; j < modules.size();j++)
            {
                if(modules.get(currentModule).length() > modules.get(j).length())
                {
                    int currentPos;
                    currentPos = modules.indexOf(i);
                    modules.set(modules.indexOf(j), modules.get(i));
                    modules.set(currentPos, modules.get(j));
                }
            }
(模块m:myClient.getModules())的

{
如果(m.isToggled()&&m.getName()!=“单击GUI”)
{
modules.add(m.getName());
对于(int i=0;imodules.get(j).length())
{
int-currentPos;
currentPos=模块索引(i);
modules.set(modules.indexOf(j),modules.get(i));
modules.set(currentPos,modules.get(j));
}
}
每次我尝试解决这个问题时,我都会忘记我想在中间编码时做些什么,或者根本不起作用 1 mod处于活动状态:绘制mods名称,没有问题 2个mod激活:将第一个激活的mod保留在顶部,并在下面绘制第二个mod的名称两次。 3+多个MOD处于活动状态:崩溃


任何反馈都将不胜感激,谢谢大家

这里有一个使用流的解决方案:

List<String> modules = myClient.getModules().stream()
    .filter(m -> m.isToggled() && !"Click GUI".equals(m.getName()))
    .map(Module::getName)
    .sorted(Comparator.comparing(String::length).reversed())
    .collect(Collectors.toList());
List modules=myClient.getModules().stream()
.filter(m->m.isToggled()&&!“单击GUI”。等于(m.getName())
.map(模块::getName)
.sorted(Comparator.comparing(字符串::长度).reversed())
.collect(Collectors.toList());

这假设
getModules
返回一些可以流式传输的集合。

您需要通过实现
java.util.comparator
接口来编写模块比较器,并在其中写入排序逻辑,如:

import java.util.Comparator;

public class ModuleSorter implements Comparator<Module> {

    @Override
    public int compare(Module module1, Module module2) {
        return Integer.valueOf(module2.getName().length()).compareTo(module1.getName().length());
    }

}

moduleList
中的模块按照您的要求进行排序。

我认为您会从中受益,例如:…为什么要使用
索引
?使您想要排序的东西实现可比性。
m.getName()!=“Click GUI”
。请阅读。
m.getName()!=“Click GUI”
final List<Module> moduleList = myClient.getModules();
moduleList.sort(new ModuleSorter());