android按降序排列数据

时间:2015-07-28 13:43:44

标签: java android sorting

我有以下数据字符串(逗号格式)(名称,标记)

A,20,B,10,C,30

我想转换为降序,如:

C,30,A,29,B,10

请帮助我如何在android中实现?

以下是我准备的代码......

public class custom_sort {

    public String name;
    public int mark;

    public custom_sort(String a, int b) {
        // TODO Auto-generated constructor stub

        name = a;
        mark = b;
    }

    void setname(String s)
    {
        name=s;
    }

    void setmark(int s)
    {
        mark = s;
    }

    String getname()
    {
        return(name);
    }

    int getmark()
    {
        return(mark);
    }


}

先谢谢,

3 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。我看到你已经创建了一个类:custom_sort。我们可以使用它来对它进行排序,如果我们只是使它具有可比性。我们通过实现Comparable接口来实现这一点。

public class custom_sort implements Comparable{

然后你需要做的就是实现一个必需的方法:

@Override
    public int compareTo(custom_sort cs) {
       /*
       This method should return 0 if the two objects are equal,
       1 if this is biggest 
       and -1 if cs is biggest */
    }

然后你可以将所有custom_sorts放在List中,只做Arrays.sort(yourArray)。

您还可以查看此帖子Android sort array

答案 1 :(得分:1)

试试这个:

import android.support.v4.util.Pair;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

String[] values = {"A", "20", "B", "10", "C", "30"};
List<Pair> pairs = new ArrayList<>();
for (int i = 0; i < values.length; i += 2) {
    pairs.add(new Pair<>(values[i], Integer.parseInt(values[i + 1])));
}
Collections.sort(pairs, new Comparator<Pair>() {
    @Override
    public int compare(Pair lhs, Pair rhs) {
        return ((Integer) rhs.second).compareTo((Integer) lhs.second);
    }
});

列表对现在按您的意愿排序。查看使用http://developer.android.com/reference/android/util/Pair.html

的Pair类

如果您想将其转换回来,代码将帮助您:

String[] newValues = new String[values.length];
int i = 0;
for (Pair pair : pairs) {
    newValues[i] = (String) pair.first;
    newValues[i + 1] = Integer.toString((Integer) pair.second);
    i += 2;
}

答案 2 :(得分:1)

使用ArrayList而不是字符串数组。

这可能不是最佳解决方案,但可行。

初始化ArrayList

ArrayList<String> names = new ArrayList<>();
ArrayList<Integer> scores = new ArrayList<>();

ArrayList

中填写数据
names.add("A");
scores.add(20);
....

现在对它们进行排序

private void sortScoreAndName() {
    for (int i = 0; i < scores.size(); i++) {
        for (int j = 0; j < i; j++) {
            if (scores.get(i) > scores.get(j))
                swap(i, j);
        }
    }
}

private void swap(int i, int j) {
    int tempSco = scores.get(i);
    String tempName = names.get(i);
    scores.remove(i);
    names.remove(i);
    scores.add(i, scores.get(j));
    names.add(i, names.get(j));
    scores.remove(j);
    names.remove(j);
    scores.add(j, tempSco);
    names.add(j, tempName);
}

现在您的ArrayList按降序排列。您可以使用。

获取相应的数据
names.get(poition);
scores.get(position);