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