gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:43:57 33 4
gpt4 key购买 nike

我有这个城市类别需要排序。试图找到其他帖子,但实际上没有帮助,因为我无法按照我想要的方式使用集合。我有一个包含我想要排序的整数的数组,这很容易,但是我想以与整数数组排序相同的方式对字符串数组进行排序。

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

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 的问题。

我从我的主类中获取了一些城市字符串,并从城市邮政编码中获取了一些整数,也从我的主类中获取了一些整数。不知何故,我希望能够按整数值对整个 string 和 int 数组进行排序。但我没有看到其他人在做同样的事情..

最佳答案

代码中有很多事情需要评估和修复。

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

如果我没猜错的话,您想要处理城市的 ArrayList,其中每个城市都有邮政编码和城市名称。您首先需要了解如何定义您的类。所以,我们刚刚找到了一个名为 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;
}

}

现在,您需要一个类(可能是主类)来保存 Cities 的 ArrayList ( ArrayList<City> )请注意,该数组中的每个项目都是 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());

集合的排序函数,获取 ArrayList 作为第一个参数,并将比较器(解释如何比较项目的函数)作为第二个参数。

城市是你的ArrayList(城市列表),比较器是一个函数,它获取两个城市(c1和c2),并返回两个邮政编码的减法(结果0意味着它们相等,结果为负意味着c2 邮政编码更大,结果为正意味着 c1 邮政编码更大)。

关键要点:

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

希望有帮助:)

关于java - 根据另一个数组的排序方式对我的数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54252419/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com