-1

可能重复:
对 2 个数组列表进行排序的最佳方法?

package bubblesort;

import java.util.*;

public class BubbleSort {

public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
    Scanner input2 = new Scanner(System.in);
    List<String> lastnamesList = new ArrayList();
    List<String> firstnamesList = new ArrayList();
    List<Integer> ageList = new ArrayList();       
    List<String> fullnamesList = new ArrayList();
    int decider;
    String EOF = "EOF";


    System.out.println("Enter in 0 to sort by Last Name, Enter in 1 to sort by Age");
    decider = input.nextInt();

    /*if(decider == 0)
    {
    System.out.println("Sorting by Last Name");
        for(int i=0;i<3;i++)
        {
        System.out.println("Please Enter in your Last Name, FirstName, Age: " );
        fullnamesList.add(input2.nextLine());
        }
    Collections.sort(fullnamesList);
    System.out.println("Sorting by Last Name: ");
    System.out.println(fullnamesList);
    }*/ 
    //String[] lastnamesArray = lastnamesList.toArray(new String[lastnamesList.size()]);
    //String[] firstnamesArray = firstnamesList.toArray(new String[firstnamesList.size()]);
    if(decider == 1)
    {
    System.out.println("Sorting by Age");
        for(int i=0;i<3;i++)
        {
        System.out.println("Please Enter in your Last Name: " );
        lastnamesList.add(input2.nextLine());
        System.out.println("Please Enter in your First Name: " );
        firstnamesList.add(input2.nextLine());
        System.out.println("Please Enter in your Age: " );
        ageList.add(input.nextInt());

        }

    String[] firstnamesArray = firstnamesList.toArray(new String[firstnamesList.size()]);
    String[] lastnamesArray = lastnamesList.toArray(new String[lastnamesList.size()]);
    fullnamesList.addAll(firstnamesList);
    fullnamesList.addAll(lastnamesList);
    String[] fullnamesArray = fullnamesList.toArray(new String[firstnamesList.size()+lastnamesList.size()]);

    Collections.sort(fullnamesList);
    System.out.println("Sorting by Age");
    System.out.println(fullnamesList);
    }
}
public static void sortStringBubble(String x[])
{
    int j;
    boolean flag = true;
    String temp;

    while(flag)
    {
        flag = false;
        for(j = 0;j < x.length -1 ; j++)
        {
            if (x [j].compareToIgnoreCase(x[j+1])>0)
            {
                temp = x[j];
                x[j] = x[j+1];
                x[j+1] = temp;
                flag = true;
            }
        }
    }
}

}

我试图将名字、姓氏和年龄放在一起,但我希望它按字母顺序排序,而不是单独排序。

4

1 回答 1

2

代替

List<String> lastnamesList = new ArrayList();
List<String> firstnamesList = new ArrayList();
List<Integer> ageList = new ArrayList();   

利用

List<Person> personList = new ArrayList<>();

Person您自己编写的课程在哪里。比只有一个列表要排序。

Person会有字段lastName,firstNameage,所以他们会一直在一起。

另外,请参阅thisthis post,或其中一些

于 2012-12-09T18:54:42.183 回答