Java 按升序和降序整数排序
我有一个POJO类,它的内容是对从JSON获取的整数进行排序。当我实现它时,Integer不能进行升序或降序排序 示例:JSON有许多数据,一个数据有一个整数。调用所有数据并单击“升序排序”,然后单击“整数升序排序”。但我使用这样的代码,不能对整数排序 代码:Java 按升序和降序整数排序,java,android,Java,Android,我有一个POJO类,它的内容是对从JSON获取的整数进行排序。当我实现它时,Integer不能进行升序或降序排序 示例:JSON有许多数据,一个数据有一个整数。调用所有数据并单击“升序排序”,然后单击“整数升序排序”。但我使用这样的代码,不能对整数排序 代码: public class ModelNameProductUrutkan { @SerializedName("price_regular") private int price; public int getP
public class ModelNameProductUrutkan {
@SerializedName("price_regular")
private int price;
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
// Filter Descending Integer
public static final Comparator<ModelNameProductUrutkan> sortByHighPrice = new Comparator<ModelNameProductUrutkan>() {
@Override
public int compare(ModelNameProductUrutkan o1, ModelNameProductUrutkan o2) {
return o2.getPrice() - o1.getPrice();
}
};
// Filter Ascending Integer
public static final Comparator<ModelNameProductUrutkan> sortByLowPrice = new Comparator<ModelNameProductUrutkan>() {
@Override
public int compare(ModelNameProductUrutkan o1, ModelNameProductUrutkan o2) {
return o1.getPrice() - o2.getPrice();
}
};
公共类ModelNameProductUrutkan{
@序列化名称(“常规价格”)
私人int价格;
public int getPrice(){
退货价格;
}
公共无效设置价格(整数价格){
这个价格=价格;
}
//过滤递减整数
公共静态最终比较器sortByHighPrice=新比较器(){
@凌驾
公共整数比较(ModelNameProductUrutkan o1,ModelNameProductUrutkan o2){
返回o2.getPrice()-o1.getPrice();
}
};
//过滤升序整数
公共静态最终比较器sortByLowPrice=新比较器(){
@凌驾
公共整数比较(ModelNameProductUrutkan o1,ModelNameProductUrutkan o2){
返回o1.getPrice()-o2.getPrice();
}
};
SortingInteger.java:
private List<ModelNameProductUrutkan> modelNameProductUrutkans;
...............
filterHargaTerendah.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Call<JsonObject> getProduct = baseApiService.getDetailProductCategory(category_id, perPage, source_id);
getProduct.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
if (!response.isSuccessful()) {
Log.e(TAG, "Response Error : " + response.code());
} else {
try {
JSONObject jsonObject = new JSONObject(response.body().toString());
JSONObject object = jsonObject.getJSONObject("data");
JSONArray jsonArray = object.getJSONArray("items");
modelNameProductUrutkans = new ArrayList<>();
for(int a = 0; a <= jsonArray.length(); a++) {
JSONObject objectData = jsonArray.getJSONObject(a);
ModelNameProductUrutkan modelNameProductUrutkan = new ModelNameProductUrutkan();
modelNameProductUrutkan.setPrice(objectData.getInt("price_regular"));
modelNameProductUrutkans.add(modelNameProductUrutkan);
Toast.makeText(getContext(), "Sort By Low Price : " + modelNameProductUrutkan.getPrice(), Toast.LENGTH_SHORT).show();
}
Collections.sort(modelNameProductUrutkans, ModelNameProductUrutkan.sortByLowPrice);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
Log.e(TAG, "onFailure: " + t.getMessage());
}
});
}
});
私有列表modelnametroducturutkans;
...............
filterArgaterEndah.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
调用getProduct=baseApiService.getDetailProductCategory(category\u id,perPage,source\u id);
getProduct.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
如果(!response.issusccessful()){
Log.e(标记,“响应错误:+Response.code());
}否则{
试一试{
JSONObject=newJSONObject(response.body().toString());
JSONObject object=JSONObject.getJSONObject(“数据”);
JSONArray JSONArray=object.getJSONArray(“items”);
modelNameProductUrutkans=新的ArrayList();
对于(int a=0;a更改为以下方式,它应该可以工作:
return Integer.compare(o1.getPrice(), o2.getPrice());
不要使用减号运算符(-
)来比较数值。请调用,或者改为。“但我使用这样的代码,无法对整数排序”对不起,不知道这意味着什么。您有什么问题?请阅读“”我的意思是,当我在调用JSON@Andreasy后单击按钮sort by ASSENDING或DEVENDING时,无法对整数进行排序。在集合之后,您似乎没有对modelNameProductUrutkans
列表执行任何操作。sort(…)
调用,那么您如何知道排序不起作用呢?---请注意,您正在执行所有Toast.makeText(…)
排序前调用。