java - 如何按每个字符串的第二个字符对字符串数组进行排序?

标签 java arrays string sorting

我编写了一个程序,要求用户将名称输入到数组中,然后名称按字母顺序排序...该程序运行良好,但我想知道是否可以对第二个、第三个输入的每个名称进行排序,或每个字符串中的第四个字符?例如,如果用户输入 Bob、Dan 和 Kris,则程序应将它们排序为 Dan、Bob、Kris。这是我的程序,它按字符串的第一个字母对字符串数组进行排序:

  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.List;
  import java.util.Scanner;


public class SortingAnArrayOfStrings {




public static void main(String[] args) {


{
     //Ask the user for names to add to the array
     List<String> list=new ArrayList<String>();
     Scanner in=new Scanner(System.in);
     do {
         System.out.println(" The names on the list are "+list);
         System.out.println("Would you like to add another name to the list? (y/n)");

         if (in.next().startsWith("y")) {
             System.out.println("Enter:");
             list.add(in.next());
         }else{break;

        }
     } while (true);
    //display the names that have been added to the array
    System.out.println("The names on the list are "+list);

    //sort the array of names in alphabetical order
    String[] Arr=list.toArray(new String[list.size()]);
    String[] stringArray=new String[Arr.length];

     for(int i=0;i<Arr.length;i++)
     {
         for (int j = i+1; j < Arr.length; j++) {
             if (Arr[i].trim().compareTo(Arr[j].trim())>0) {
                 String temp=Arr[j];
                 Arr[j]=Arr[i];
                 Arr[i]=temp;
             }
         }
         stringArray[i]=Arr[i];
     }

     //display the sorted list of names
     System.out.println("This is the list of names after sorting them in alphabetical order : ");

     for(String ss:stringArray){
         System.out.print(ss + " ");

     }
  }

}
}

最佳答案

您可以使用自定义java.util.Comparator尝试如下操作:

String[] names = {"Dan", "Bob", "Kris"};
java.util.Collections.sort(java.util.Arrays.asList(names), new java.util.Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        // TODO: Argument validation (nullity, length)
        return s1.charAt(1) - s2.charAt(1);//comparision
    }  
});

for (String name : names) System.out.println(name);

输出:

Dan
Bob
Kris

关于java - 如何按每个字符串的第二个字符对字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35402555/

相关文章:

java - JSTL - 格式编号 : how to show phone number in (###) ####### format

java - 如何使用 Spring MVC 对上传的文件数量设置最大限制?

java - 如何使用 typedQuery 在 Criteria api 上添加分页?

javascript - Float32Array 在与 WebGL (Chrome) 交互时不更新 ArrayBuffer 以反射(reflect)分配的值

r - 在R中删除String中的重复元素

java - 不同类的方法相互使用的良好做法是什么?

android - 比较 JSONArray

c++ - 调试断言失败 - 数组迭代器不兼容

python /杰森 : If substring in string always results in TypeError: string member test needs char left operand

java - 从字符串中提取数字并将它们相加