我需要根据价格对商品进行分类.
每个项目的价格都存储在JSON数组中
我创建了一个二维数组来存储名称和价格
像这样……
String [][] priceArray = new String [itemArray.length()] [2]; for(int i = 0; i < itemArray.length(); i++) { //put the item name in the first dimension priceArray[i][0] = itemArray.getJsONObject(i).getString("name"); //put the item price in the second dimension priceArray[i][1] = itemArray.getJsONObject(i).getString("baseprice"); } //DEBUG TO SEE THE RESulTS for(int i = 0; i < priceArray.length; i++) { Log.i("Item name : Item Price", priceArray[i][0] + " : " + priceArray[i][1]); }
这工作正常…但我怎么能按第二维的价格对数组进行排序?
这甚至是最好的方法吗?
解决方法:
更好的方法:利用OO编程,首先,创建一个包含名称和价格的类Item:
class Item { String name; BigDecimal price; public String toString() { return "ITEM: {name:" + name + ", price: " + price + "}" }}
然后创建一个Items列表而不是一个2D数组:
List<Item> items = new ArrayList<Item>();for(int i = 0; i < itemArray.length(); i++){ Item item = new Item(); item.name = itemArray.getJsONObject(i).getString("name"); item.price = new BigDecimal(itemArray.getJsONObject(i).getString("baseprice")); items.add(item);}
最后,如果您需要,可以按名称订购:
// Sort by nameCollections.sort(items, new Comparator<Item>() { @OverrIDe public int compare(Item o1, Item o2) { return o1.name.compareto(o2.name); }});// at this point, items will be ordered by name
或者如果您想按价格订购:
// Sort by priceCollections.sort(items, new Comparator<Item>() { @OverrIDe public int compare(Item o1, Item o2) { return o1.price.compareto(o2.price); }});// at this point, items will be ordered by price
当然,我错过了一些小问题,比如使用getter和setter而不是直接访问Item的字段,但目的是展示这个想法.
总结以上是内存溢出为你收集整理的java – 按第二维排序2d数组全部内容,希望文章能够帮你解决java – 按第二维排序2d数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)