开发者

Issue with sorting with collection in java

开发者 https://www.devze.com 2023-01-18 07:27 出处:网络
I have a hashmap: HashMap<String,QuoteBean> map = new HashMap<String,QuoteBean>(); The QuoteBean is a normal bean:

I have a hashmap:

HashMap<String,QuoteBean> map = new HashMap<String,QuoteBean>();

The QuoteBean is a normal bean:

class QuoteBean{
    String symbol;
    BigDecimal price;
    BigDecimal quoteprice;
    //setter and getter methods
}

Then, I get the values of the map which a collection of QuoteBean objects

Collection obs  =map.values(); //getting all the quoteobjects
List list = new ArrayList(obs); //converted to list

Then to sort:

Collection.sort(list, new SymbolComparator());

SymolComparator is:

public class SymbolComparator implements Comparator<QuoteBean>{
    String symbol;
    @Override
    public int compare(QuoteBean o1, QuoteBean o2) {
        String symbol1=o1.getProductId().getSymbol();
        String symbol2=o2.getProductI开发者_StackOverflow中文版d().getSymbol();
        return symbol1.compareTo(symbol2);
    }    
}

When I execute the code I get an exeception which says cannot convert String to QuoteBean and the exception throws on the first line.


Are you positive you're not creating a list from the keys?

Collection obs  =map.values(); //getting all the quoteobjects
List list = new ArrayList(obs);

Just for fun make sure you can do

List<QuoteBean> beans = new ArrayList<QuoteBean>(map.values());


I think the mistake is with these two statements...

String symbol1=o1.getProductId().getSymbol();
String symbol2=o2.getProductId().getSymbol();

if you want to sort the based on string you could just say o1.symbol to get the string. I still don;t understand what getproductid() is used for.


I think instead of

o1.getProductId().getSymbol();

you should do

o1.getSymbol();

since the QuoteBean has the symbol as a property.

class QuoteBean{
    String symbol;
    BigDecimal price;
    BigDecimal quoteprice;
    //setter and getter methods
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号