根据另一个数组的排序方式对我的数组进行排序?

时间:2019-01-18 10:50:27

标签: java

我有需要分类的这个城市班级。 试图查找其他帖子,但并没有真正帮助,因为我无法以我想使用的方式使用收藏集。 我有一个要排序的整数数组,这很容易,但是然后我想用与对整数数组进行排序相同的方式对字符串数组进行排序。

试图使用集合,但只能对一个数组进行排序。

City(int i, String string) {
    ArrayList<Integer> zipCode = new ArrayList<Integer>(); // This array is the integer.
    zipCode.add(i);
    i = Z;
    this.i = i;
    ArrayList<String> cityName = new ArrayList<String>();
    cityName.add(string);
    string = c;
}

public void list(String c) {
    ArrayList<String> l = new ArrayList<String>(); // This is the string.
    l.add(c);
    // Here i want to be able to sort the string in the same order as the "zipCode"
    // array or integer array.
    for (String X : l) {
        System.out.println(X);
    }

}

只希望得到正确的订单,我就可以做其他所有事情,但这是困扰atm的问题。

我从我的主要班级得到一些城市的字符串,并从我的主要班级从城市的邮政编码获得一些整数。 我以某种方式希望能够通过整数值将整个字符串数组和int排序在一起。但是我看不到其他人在做这样的事情。

2 个答案:

答案 0 :(得分:3)

代码中有很多事情需要评估和解决。

首先,zipCodecityNamel在其功能之外不可用。 zipCodecityName应该是该类的属性。但这仍然不是您想要的。

如果我答对了,您想处理城市的ArrayList,每个城市都有ZipCode和CityName。您首先需要了解如何定义类。 因此,我们只想出了一个名为City的类,它具有两个属性,让我们对其进行定义:

public class City {

    private int zipCode;
    private String cityName;

    public City(int zipCode, String cityName) {
        this.zipCode=zipCode;
        this.cityName=cityName;
    }

    public int getZipCode() {
        return zipCode;
    }

    public String getCityName() {
        return cityName;
    }

}

现在,您需要一个可以容纳城市ArrayList<City>)的ArrayList的类(也许是主类) 请注意,该数组中的每个项目都是City类型的变量-因此它同时包含zipCodecityName,现在,当您按zipCode对数组进行排序时-整个项目(城市)将排序:

 public static void main(String[] args){

 ArrayList<City> cities = new ArrayList<City>();


 cities.add(new City(999,"NINE"));
 cities.add(new City(123,"COOL"));
 cities.add(new City(456,"FUN"));


 for(int i=0;i<cities.size();i++) {
     System.out.println(cities.get(i).getZipCode() + cities.get(i).getCityName());
 }

 Collections.sort(cities, (c1,c2) -> c1.getZipCode()-c2.getZipCode());
 System.out.println();

 for(int i=0;i<cities.size();i++) {
     System.out.println(cities.get(i).getZipCode() + cities.get(i).getCityName());
 }

 } 

结果:

999NINE
123COOL
456FUN

123COOL
456FUN
999NINE

排序方式如何?

Collections.sort(cities, (c1,c2) -> c1.getZipCode()-c2.getZipCode());

对Collections进行排序的函数,将ArrayList作为第一个参数,将比较器(一个解释 HOW 来比较各项的函数)作为第二个参数。

好吧,城市是您的ArrayList(城市列表),比较器是一个函数,用于获取两个城市(c1和c2),并返回两个邮政编码的减法(结果为0表示它们相等,结果为负数) (c2邮递区号较大,则可能表示c1邮递区号较大)。

关键点:

  1. 花点时间考虑一下类定义-每个类都有哪些属性
  2. 您不想在构造函数中定义新的ArrayList(如果您希望该列表在函数外部“存在”)
  3. 详细了解ArrayListCollectionsComparator,排序。

希望对您有所帮助:)

答案 1 :(得分:0)

创建一个包含2个字段的对象数组-int值和String值,然后对该数组进行排序