【问题标题】:How to join a String array to a int array and sort by number (higher to lower) in Android?如何在 Android 中将 String 数组连接到 int 数组并按数字(从高到低)排序?
【发布时间】:2017-12-31 11:25:41
【问题描述】:

我有两个数组:

int[] sinais = new int[arraySinais.length];
String[] arraySSID = new String[] { };

然后我将它们合并成一个数组:

String[] arrayScan = new String[arraySinais.length];
for (int i = 0; i < arraySSID.length; i++) {
    arrayScan[i] = arraySSID[i] + " " + sinais[i];
}

但是现在我需要按数字按降序对这个新数组进行排序,并根据数字在ListView 中放置一个Image,我不知道该怎么做。

【问题讨论】:

  • 这是不可能的。使用所需的数据类型创建您自己的类,并创建一个使用 int 值进行排序的比较器。
  • 旁注:请使用 lowerCamelCase 作为变量名。
  • 谢谢 Murat K.,我会的!
  • @CarlosUghini 这一次,我为你做了,因为我无法抗拒。但下一次,请按照 Murat K. 的建议行事。
  • 将您的数据传递给某个 Map/HashMap,然后使用 Map map = new TreeMap(yourMap);这将按键对您的数据进行排序。

标签: java android arrays sorting


【解决方案1】:

您可以使用创建自己的包含 int 和字符串的对象并使用 arraylist 进行排序

【讨论】:

    【解决方案2】:

    首先创建您自己的自定义元素 (Object),主要由 int numberString string 组成。

    public class Element implements Comparable<Element>{
        private int number;
        private String string;
        public Element(String string, int number) {
            this.number =number;
            this.string = string;
        }
        //create custom constructors if its allowed to define an element without a number or string
        public int getNumber() {
            return number;
        }
        public void setNumber(int number) {
            this.number = number;
        }
        public String getString() {
            return string;
        }
        public void setString(String string) {
            this.string = string;
        }
    
        @Override
        public int compareTo(Element e) {
    
            return number - e.number;
        }
    
    }
    

    如上实现comparable 以根据数值进行排序,但请记住,您的元素不会单独排序strings

    如果您想在不存在数字的情况下根据字符串对列表进行排序,请使用comparTo() 方法的此实现:

    @Override
        public int compareTo(Element e) {
            if(e.number != 0) return number - e.number;
            return string.compareTo(e.string);
        }
    

    在使用实现 List 元素并使用 Collections sort() 方法时,你很高兴:

    List<Element> list = new ArrayList<>();
    //add Elements
    Collections.sort(list);
    

    【讨论】:

      【解决方案3】:

      我用Bubble Sort下面的方法解决了我的问题:

      >     for (int i = Sinais.length; i >= 1; i--){
      >                         for (int j = 1; j < i; j++){
      >                             if (Sinais[j-1]<Sinais[j]){
      >                                 int aux = Sinais[j];
      >                                 String aux2 = ArraySSID[j];
      >                                 Sinais[j] = Sinais[j-1];
      >                                 ArraySSID[j] = ArraySSID[j-1];
      >                                 Sinais[j-1] = aux;
      >                                 ArraySSID[j-1] = aux2;
      >                             }
      >                         }
      >                     }
      

      【讨论】:

        猜你喜欢
        • 2013-12-13
        • 2012-04-05
        • 2014-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多