Java 在不使用Array.Sort的情况下对多维字符串数组进行排序

Java 在不使用Array.Sort的情况下对多维字符串数组进行排序,java,Java,我对Java是新手,但我想扩展我对Java的知识。下面是一个课堂作业,我很难完成。我需要创建一个传入二维字符串数组的方法,然后按第二个元素对数组进行排序 方法sortContacts 声明为公共静态方法时,应采用 二维字符串数组作为参数,以及 阵列中的联系人数 不返回任何内容对给定联系人列表的内容进行排序 作为参数,使用lastName作为排序字段 您可以使用文本中描述的任何排序机制 气泡、插入或选择 关键概念:在实现排序时,技巧是 确定要比较的值的尺寸,然后 它们与循环中的值的关系。 提示:

我对Java是新手,但我想扩展我对Java的知识。下面是一个课堂作业,我很难完成。我需要创建一个传入二维字符串数组的方法,然后按第二个元素对数组进行排序

方法sortContacts

声明为公共静态方法时,应采用 二维字符串数组作为参数,以及 阵列中的联系人数 不返回任何内容对给定联系人列表的内容进行排序 作为参数,使用lastName作为排序字段 您可以使用文本中描述的任何排序机制 气泡、插入或选择 关键概念:在实现排序时,技巧是 确定要比较的值的尺寸,然后 它们与循环中的值的关系。 提示: 循环不要依赖于数组的长度,而是使用 来自联系人数的值 您的temp变量将是一个 大小为3的数组,字符串[]临时=新字符串[3]; 你需要 使用string1.compareTostring2方法比较两个字符串。 示例数据:名字、姓氏、电话号码

String [][] contactsArray = { 

        {"Emily","Watson","913-555-0001"},
        {"Madison","Jacobs","913-555-0002"},
        {"Joshua","Cooper","913-555-0003"},
        {"Brandon","Alexander","913-555-0004"},
        {"Emma","Miller","913-555-0005"},
        {"Daniel","Ward","913-555-0006"},
        {"Olivia","Davis","913-555-0007"},
        {"Isaac","Torres","913-555-0008"},
        {"Austin","Morris","913-555-0009"}



public static void sortContact(String[][] contactsArray, int numContacts) {

    String[] temp = new String[3];
    String [] words = contactsArray[3];

    for(int i = 0; i < numContacts-1; i++)
    {
        int smallest = i;
        for(int j = i + 1; j < numContacts-1; j++) 
        {

            //Prints loop variables so I can see them before any action
            System.out.println("First: "+words[j]+" " +"Second "+words[i]);
            if(words[j].compareTo(words[i]) < 0)
                smallest = j;
        }

       //put the new minimum in the i-th position.

        //String temp = words[i];
        words[i] = words[smallest];
        words[smallest] = temp[i];
    }   
}
整数数组的例子有很多,但字符串数组的例子不多


非常感谢您的建议。

您可以这样做:

 for(int i=0;i<numContacts;i++) {
        for(int j=i+1;j<numContacts;j++) {
            if(contactsArray [i][1].compareTo(contactsArray [j][1])>0) {
                String[] temp = contactsArray [i];
                contactsArray [i] = contactsArray [j];
                contactsArray [j] = temp;
            }
        }
  }

我建议您了解OOPs的概念以及如何在Java中实现它们。在线上有数百本书、文章和教程,如、等

至于答案,您应该创建一个扩展可比较接口的类来表示2D数组中的每一行。例如,创建一个名为Contact的类,该类实现可比较的接口。从Comparable接口实现compareTo方法。 然后创建一个驱动程序类,该类创建人员和呼叫集合列表。sortlist

我有意将实现留给您,因为这是您的任务,这样您就可以通过实践来学习,而不是其他人为您做

请参考以下链接以了解可比较的界面。

很抱歉,我花了这么长时间才回复。Vinay,代码工作得很好。谢谢你的帮助。