将Object []强制转换为自定义项目[]

CptRayMar

我有我的ArrayList

ArrayList<Item> itemList = new ArrayList<Item>();

然后在其中填充项目。稍后,我想在循环中访问items属性以获取数据,但是

Item[] itemArr = (Item[]) itemList.toArray();

这给了我错误:

 java.lang.ClassCastException: java.lang.Object[] cannot be cast to com.raynemartin.SAAndroidAppCompetition.Item[]

如果注定要失败,那么我还可以如何访问Items的属性?这些项目位于ArrayList中,因此可以填充到Android ListView中。现在,我想对ArrayList进行排序,但是需要访问Item类的.getRating()方法。

Item[] itemArr= (Item[])itemList.toArray();

    for(int i =0;i<itemArr.length;i++){
            for(int j=i;i<itemArr.length;j++){
                if(itemArr[j].getRating()>itemArr[i].getRating()){
                        Item temp = itemArr[j];
                        itemArr[j] = itemArr[i];
                        itemArr[i] = temp;
                }
            }
        }
    }

编辑-这是物品类别代码

public class Item {

    private String title;
    private String category;
    private String downloads;
    private double rating;
    private Bitmap icon;

    public Item(String title, String category, String downloads,double rating,Bitmap icon) {
        this.title = title;
        this.category = category;
        this.downloads = downloads;
        this.icon = icon;
        this.rating = rating;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getDownloads() {
        return downloads;
    }

    public void setDownloads(String downloads) {
        this.downloads = downloads;
    }

    public Bitmap getIcon() {
        return icon;
    }

    public void setIcon(Bitmap icon) {
        this.icon = icon;
    }

    public double getRating() {
        return rating;
    }

    public void setRating(double rating) {
        this.rating = rating;
    }
}
拉贡南丹

要进行排序,您可以尝试以下操作。

在您的Item类中实现toString

public String toString()
{
    return String.valueOf(rating);
}

实施比较器

 class SortingRating implements Comparator<Item>
{

        @Override
        public int compare(Item arg0, Item arg1) {
            if (arg0.getRating() < arg1.getRating()) return -1;
            if (arg0.getRating() > arg1.getRating()) return 1;
            return 0;
    }

}

然后排序您的清单

   Collections.sort(itemList, new SortingRating());

例子:如果我错了,请纠正我。

public class MainClass {
    static ArrayList<Item> aa = new ArrayList<Item>();
    public static void main(String[] args) {

        Item i1 = new Item("soap","sales","yes",4.0);
        aa.add(i1);
        Item i2 = new Item("soap","sales","yes",5.2);
        aa.add(i2);
        Item i3 = new Item("soap","sales","yes",3.8);
        aa.add(i3);
        Item i4 = new Item("soap","sales","yes",5.1);
        aa.add(i4);

         Collections.sort(aa, new SortingRating());
         for(int i=0;i<aa.size();i++)
         {
         System.out.println("Title  : " +aa.get(i).getTitle()+"--"+"Category : "+aa.get(i).getCategory()+"--"+"Downlaods : "+aa.get(i).getDownloads()+"--"+"Rating : "+aa.get(i).getRating());
         }

    }
}
class SortingRating implements Comparator<Item>
{

        @Override
        public int compare(Item arg0, Item arg1) {
            if (arg0.getRating() < arg1.getRating()) return -1;
            if (arg0.getRating() > arg1.getRating()) return 1;
            return 0;
        }   
}

物品类。遗漏了位图图标

public class Item  {

    private String title;
    private String category;
    private String downloads;
    private double rating;


    public Item(String title, String category, String downloads,double rating) {
        this.title = title;
        this.category = category;
        this.downloads = downloads;
        this.rating = rating;
    }
    public String toString()
    {
        return String.valueOf(rating);
    }
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getDownloads() {
        return downloads;
    }

    public void setDownloads(String downloads) {
        this.downloads = downloads;
    }

    public double getRating() {
        return rating;
    }

    public void setRating(double rating) {
        this.rating = rating;
    }
}

输出

Title  : soap--Category : sales--Downlaods : yes--Rating : 3.8
Title  : soap--Category : sales--Downlaods : yes--Rating : 4.0
Title  : soap--Category : sales--Downlaods : yes--Rating : 5.1
Title  : soap--Category : sales--Downlaods : yes--Rating : 5.2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将课程强制转换为自定义课程

将IEnumerable强制转换为自定义ObservableCollection类吗?

如何将XNode强制转换为自定义类型?

使用pybind11将NumPy数组强制转换为自定义C ++矩阵类

无法使用新的Firebase将类型'__NSDictionaryM'的值强制转换为自定义用户类

如何将NSURLSessionDownloadTask强制转换为自定义NSURLSessionDownloadTask(继承)?

XGBoost自定义评估函数导致“无法将类型强制转换为类型的向量”

Datagridview如何将选定的行强制转换为自定义对象

无法将组织日志导出到 GCP 中的自定义项目

java.lang.ClassCastException:无法将java.util.HashMap强制转换为自定义数据类

无法将 java.lang.Object 转换为自定义对象

将自定义类对象转换为Object []

将日期时间转换为自定义格式

将元组转换为自定义字符串

将PySpark命令转换为自定义函数

将 sqlite prepare 转换为自定义模型

将javascript函数转换为php(自定义排序)

将字符串转换为自定义类

将请求转换为自定义验证请求

将 List 接口转换为自定义 List 类

将字典数组转换为自定义对象swift

使用自定义格式将 CSV 转换为 JSON

将表转换为自定义类型的数组

将表单转换为自定义设置的语言环境

如何将接口转换为自定义类型

将错误从 `try_into()` 转换为自定义错误

使用自定义方法将StringPath转换为DataPath

将悬停自定义导航栏转换为Click

将数组转换为自定义格式