繁体   English   中英

在String数组中对2个字符串进行排序(Java)

[英]Sorting 2 strings inside a String array (Java)

我有两个数组,一个用于温度,一个用于城市。如果两个温度相同,则必须按字母顺序显示相应的城市。

  • 24悉尼
  • 22雅典
  • 22奥克兰
  • 20巴塞罗那

--->这是排序代码。

public static void sort(String[] x , double[] y) {
    boolean doMore = true;

    while(doMore) {    
        doMore = false;  

        for(int i=0; i< x.length-1; i++) {    
            if(y[i] == y[i+1] && x[i] < x[i+1]) {    
                String temp2 = x[i];
                x[i] = x[i+1];
                x[i+1] = temp2;    
            } else if (y[i] < y[i+1]) {    
                double temp = y[i];    
                y[i] = y[i+1];    
                y[i+1] = temp; 

                String temp2 = x[i];        
                x[i] = x[i+1];    
                x[i+1] = temp2;    
                doMore = true;    
            }//if    
        }//for 2    
    }//while    
}// sort */

问题是在if(y[i] == y[i+1] && x[i] < x[i+1])我不能只将2个字符串与运算符>进行比较。 我也不能使用任何现成的排序方法。

有人知道如何按字母顺序对字符串进行排序吗?

StringComparable ,因此可以使用s1.compareTo(s2)

有关详细信息,请参见String.compareTo 根据字典上s1是否在s2之前,它返回负数,0或正数,也就是说,在字典中s1是否位于s2之前。

与您当前的实现方式最接近的答案是G. Bach。 您应该调查一下他的答案以找到简单的解决方案。

跳出框框思考...

您当前的实现方式存在潜在的不利影响,即您的阵列可能与索引不同步,从而最终导致错误城市的温度升高。 您可以尝试一个自定义类型,该类型将两个字段封装在一起,并有一个列表。 就像是...

public class CityTemperatureInfo implements Comparable<CityTemperatureInfo>
{
    public string cityName;
    public double temperature;

    ...
}

然后,您的应用程序会将数据用作List<CityTemperatureInfo> 这样可以确保城市名称和温度始终位于列表中的同一位置。 并且,如果使该类具有可比性,则可以实现int compareTo(CityTemperatureInfo other)方法,该方法将允许您对列表进行简单的调用排序。

通常,将相关数据保持在一起是一个好主意,以避免数据不同步的潜在问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM