我有以下数据字符串(逗号格式)(名称,标记)
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);
}
}
先谢谢,
答案 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);