您好我以下列格式获得了json响应
答案 0 :(得分:0)
要解决此问题,您可以解析大小,然后对它们进行排序。
例如,
import java.util.*;
public class HelloWorld{
public static void main(String []args){
List<String> sizes = new ArrayList<>();
sizes.add("10X12");
sizes.add("4X6");
sizes.add("3X2");
sizes.add("5X12");
sizes.add("8X12");
Collections.sort(sizes, new Comparator<String>()
{
@Override
public int compare(String o1, String o2)
{
int s1 = Integer.parseInt(o1.split("X")[0]);
int s2 = Integer.parseInt(o2.split("X")[0]);
return s1-s2;
}
});
System.out.println(sizes);
}
}
啦啦队!!!
答案 1 :(得分:0)
对实际ArrayList<HashMap<String,String>>
:
当然,这可能比首先解析整个事件以获取ArrayList,然后更容易和有效地排序,而不需要在每次比较中进行一些解析。
但你明确要求对ArrayList<HashMap<String,String>>
进行排序,可能是出于好奇,或者因为它在你的情况下实际上更加实用,所以在这里你去:)
class Size
{
int width;
int height;
}
final Pattern pattern = Pattern.compile("(\\d+)X(\\d+)");
final String papersizeKey = "papersize";
Size readSize(String description)
{
Matcher matcher = pattern.matcher(description);
Size result = new Size();
result.width = Integer.parseInt(matcher.group(1));
result.height = Integer.parseInt(matcher.group(2));
return result;
}
void sort(ArrayList<HashMap<String, String>> paperSizes)
{
paperSizes.sort(new Comparator<HashMap<String, String>>()
{
public int compare(HashMap<String, String> lhs, HashMap<String, String> rhs)
{
Size lhsSize = readSize(lhs.get(papersizeKey));
Size rhsSize = readSize(rhs.get(papersizeKey));
int result = Integer.compare(lhsSize.width, rhsSize.width);
if (result != 0)
{
return result;
}
else
{
return Integer.compare(lhsSize.height, rhsSize.height);
}
}
});
}