#android #sorting #arraylist #hashmap
#Android #сортировка #arraylist #hashmap
Вопрос:
Привет, я получаю ответ json в следующем формате
Ответ №1:
Чтобы решить эту проблему, вы можете проанализировать размер, а затем отсортировать их.
Например,
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);
}
}
Приветствую!!!
Ответ №2:
Сортировка фактического 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 resu<
}
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 resu<
}
else
{
return Integer.compare(lhsSize.height, rhsSize.height);
}
}
});
}