2016-08-13 92 views
2

我正在做一個我的世界的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)); 
       } 
      } 

每次我試圖解決這個問題我最終忘了我想要什麼中間編碼或它不工作。目前,雖然 1 mod是活動的:繪製mods的名字,沒問題 2個mods是活躍的:留下在上面第一個被激活的mod並且在下面兩次繪製第二個mod的名字。 3個mod都處於活動狀態:崩潰。

任何反饋將是使用流的解決方案是非常感謝,謝謝大家

+2

我想你會受益於[使用可比較的或比較器](http://stackoverflow.com/documentation/java/3137/comparable-and-comparator/10693/sorting-a-list -using-comparablet-or-a-comparatort#t = 201608131317475628656)[Documentation](http://stackoverflow.com/documentation)中的示例... – ppeterka

+0

爲什麼使用'indexOf'? –

+0

使你想要分類的東西實現'Comparable'。閱讀https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html。 – user1803551

回答

2

您需要通過implemening 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()); 
    } 

} 

我假設myClient.getModules()返回java.util.List的實現。現在的分類將如此簡單:

final List<Module> moduleList = myClient.getModules(); 
moduleList.sort(new ModuleSorter()); 

moduleList中的模塊按照您的要求進行排序。

3

這裏:

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()); 

這是假設getModules回報一些集合,可以進行流式處理。

相關問題