如何按字母顺序输出和排序类?

时间:2014-07-04 07:45:24

标签: java

好的,所以我在这里有一个完整的代码,目前正在使用一个展示笔记本电脑的项目。 如何在输出线条时以“字母顺序”显示笔记本电脑类(戴尔,宏基等)?

就像,宏碁打开......戴尔打开(应按字母顺序排列)

我被困住了。我尝试排序数组函数,但我想不出其他方法。

我真的很感谢你们的任何帮助。

     public class LaptopProcessor
    {
      private static LaptopProcessor lp = new LaptopProcessor();
      private static LaptopGenerator lg = new LaptopGenerator();
      private static Laptop [] laptop = new Laptop[9];
      private static String[] LaptopOriginalCompare = new String[9] ;
      private static String[] LaptopTempoCompare = new String[9] ;
      private static int ctr;
      private static int ctrFrom;
      private static int ctrTo;
      private static boolean isTheSame;
      private static String brandName1;
      private static String brandName2;
      private static String time;

      private void populateLaptops(){
        /*populates all laptop attributes since laptop[ctr] is global */ 
        for(ctr=0; ctr<laptop.length ;ctr++){
           laptop[ctr] = lg.selectLaptopByNumber(ctr);
           //populate the time
        }

        /*just to get the class name*/
        for(ctr=0; ctr<laptop.length ;ctr++){
           Class c = laptop[ctr].getClass();
           System.out.println(c);
        }
      }

      private void selectAndcompareShutdownTime(){
         for(ctrFrom=0; ctrFrom < laptop.length ;ctrFrom++){
           for(ctrTo=0; ctrTo < laptop.length ;ctrTo++){
             /*here now you can compare there attributes*/
             if (ctrFrom != ctrTo){
                brandName1 = laptop[ctrFrom].showBrand();
                brandName2 = laptop[ctrTo].showBrand();
                time = laptop[ctrFrom].selectShutdownTime(); ///just get any of the two shutdown time just to output
                isTheSame = laptop[ctrFrom].selectShutdownTime().equalsIgnoreCase(laptop[ctrTo].selectShutdownTime());
                if (isTheSame){
                   System.out.println(brandName1 + " and " +brandName2+ " has the same shutdown time for " + time + ".");
                   System.out.println("------------------------------------------------------------------------------"); 
                   System.exit(0);
                }
             }   
           }
         }
      }  

      private void selectAndcompareRebootTime(){
        for(ctrFrom=0; ctrFrom < laptop.length ;ctrFrom++){
           for(ctrTo=0; ctrTo < laptop.length ;ctrTo++){
             /*here now you can compare there attributes*/
             if (ctrFrom != ctrTo){
                brandName1 = laptop[ctrFrom].showBrand();
                brandName2 = laptop[ctrTo].showBrand();
                time = laptop[ctrFrom].selectRebootTime(); ///just get any of the two shutdown time just to output
                isTheSame = laptop[ctrFrom].selectRebootTime().equalsIgnoreCase(laptop[ctrTo].selectRebootTime());
                if (isTheSame){
                   System.out.println(brandName1 + " and " +brandName2+ " has the same reboot time for " + time + ".");
                   System.out.println("------------------------------------------------------------------------------");
                   System.exit(0);
                }
             }   
           }
         }
      }

      private void selectAndcompareOpenTime(){
        for(ctrFrom=0; ctrFrom < laptop.length ;ctrFrom++){
           for(ctrTo=0; ctrTo < laptop.length ;ctrTo++){
             /*here now you can compare there attributes*/
             if (ctrFrom != ctrTo){
                brandName1 = laptop[ctrFrom].showBrand();
                brandName2 = laptop[ctrTo].showBrand();
                time = laptop[ctrFrom].selectOpenTime(); ///just get any of the two shutdown time just to output
                isTheSame = laptop[ctrFrom].selectOpenTime().equalsIgnoreCase(laptop[ctrTo].selectOpenTime());
                if (isTheSame){
                   System.out.println(brandName1 + " and " +brandName2+ " has the same open time for " + time + ".");
                   System.out.println("------------------------------------------------------------------------------");
                   System.exit(0);
                }
             }   
           }
         }
      }

      private void executeShutdown(){
        for(ctr=0; ctr < laptop.length ;ctr++){
           laptop[ctr].shutdown();    
        }
        selectAndcompareShutdownTime();
      }

      private void executeReboot(){
        for(ctr=0; ctr < laptop.length ;ctr++){
           laptop[ctr].reboot();
        }
        selectAndcompareRebootTime();
      }

      private void executeOpen(){
        for(ctr=0; ctr < laptop.length ;ctr++){
           laptop[ctr].open();
        }
        selectAndcompareOpenTime();
      }

      private void startProcess(){
        populateLaptops();
        System.out.println("");
       /*choose which laptop functions*/
       String strChoice = selectChoice();
        switch(Integer.parseInt(strChoice)){
          default: 
          case 1: executeOpen(); break;
          case 2: executeReboot(); break;
          case 3: executeShutdown(); break;
        }
      }

      private String selectChoice(){
         return javax.swing.JOptionPane.showInputDialog("LAPTOP METHOD: \n [1] OPEN \n [2] REBOOT \n [3] SHUTDOWN");  
      }

      public static void main (String [] args){

          // static method is special because it can be called without first creating an object of the class in which the method is declared

          lp.startProcess();
      }
    }







    public class Acer extends Laptop{
        //ATTRIBUTES

        final String shutDownTime = "10000MS";
        final String rebootTime = "11000MS";
        final String openTime = "12000MS";
        private final String brandName = "ACER";    

        @Override
        public void shutdown() //method header. This prints.
        {
          System.out.println("SHUTDOWN ACER IN " + shutDownTime);
        }
        @Override
        public void reboot()
        {
           System.out.println("REBOOT ACER IN " + rebootTime);
        }
        @Override
        public void open(){
           System.out.println("OPEN ACER IN " + openTime);
        }
        @Override
        public String selectShutdownTime(){
            return shutDownTime;
        }
        @Override
        public String selectRebootTime(){
            return rebootTime;
        }
        @Override
        public String selectOpenTime(){
            return openTime;
        }
        @Override
        public String showBrand(){
            return brandName; 
        }        
    }


    public class LaptopGenerator
    {
      public Laptop selectLaptopByNumber(int id){
         switch(id){
           default:
           case 0: return new Msi();
           case 1: return new Dell();
           case 2: return new Toshiba();
           case 3: return new Acer();
           case 4: return new Asus();
           case 5: return new Lenovo();
           case 6: return new Samsung();
           case 7: return new Hp();
           case 8: return new Sony();     
        }
      }
    }

1 个答案:

答案 0 :(得分:0)

我建议您使用TreeSet

示例:

Set<String> treeSet = new TreeSet<String>();
     treeSet.add("somevalue");
     treeSet.add("Acer");
     treeSet.add("Samsung");
     treeSet.add("Apple");
     treeSet.add("Dell");

在TreeSet中,String将保持自然顺序。如果不方便,你可以提供一个比较器。