Java Map反復およびmapソートの問題
4449 ワード
今日はページでjstlのを使ってHashMapを巡ります
しかし、更新するたびに順番が変わり、HashMapが遍歴しているときは無秩序だった!TreeMapを使いたい
BaseStateのコードは次のとおりです.
しかし、使用後ずっと報告しています....cannot be cast to java.lang.Comparable TreeMapの原コードを見てみると、HashMapには次のような構造方法があります.
もともとTreeMapは秩序化されていたが、秩序化はTreeMapの各キー要素が比較できる必要があることを示しており、このようにしてこそソートすることができる.私がBaseStateというBeanを次のように変更しました.
このエラーを呼び出して解決しました!
MAPの3つの簡単な遍歴方法
<c:forEach items="${ydMap }" var="m">
<div class="mbody">
<div class="title cv">${m.key.stateName }<a href="${pageContext.request.contextPath }/pl/deleteBlackStatesByState.do?id=${m.key.id }&flag=0"><img src="${pageContext.request.contextPath }/images/jh.png" /></a>:</div>
<div class="text">
<c:forEach items="${m.value }" var="l">
<span class="cv">${l.states }<a href="${pageContext.request.contextPath }/pl/removeBlackStates.do?id=${l.id }"><img src="${pageContext.request.contextPath }/images/jh.png" /></a></span>
</c:forEach>
</div>
</div>
</c:forEach>
しかし、更新するたびに順番が変わり、HashMapが遍歴しているときは無秩序だった!TreeMapを使いたい
Map<BaseState,List<BlackChannelStates>> map=new TreeMap<BaseState,List<BlackChannelStates>>();
BaseStateのコードは次のとおりです.
public class BaseState implements Comparable<BaseState>{
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
しかし、使用後ずっと報告しています....cannot be cast to java.lang.Comparable TreeMapの原コードを見てみると、HashMapには次のような構造方法があります.
public TreeMap(Comparator<? super K> comparator) {
this.comparator = comparator;
}
もともとTreeMapは秩序化されていたが、秩序化はTreeMapの各キー要素が比較できる必要があることを示しており、このようにしてこそソートすることができる.私がBaseStateというBeanを次のように変更しました.
public class BaseState implements Comparable<BaseState>{
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public int compareTo(BaseState o) {
// TODO Auto-generated method stub
return o.getId()-this.getId();
}
}
このエラーを呼び出して解決しました!
MAPの3つの簡単な遍歴方法
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
/**
* map
* @author us
*
*/
public class test2
{
public static void main(String[] args)
{
/**
* new map,
*/
Map map=new HashMap();
for (int i = 0; i < 10; i++)
{
map.put(i+"",i+"");
System.out.println(" "+i+" ");
}
System.out.println("map "+map.size());
/**
* 1. ,
*/
// Collection c=map.values();
// Iterator it= c.iterator();
// for (; it.hasNext();)
// {
// System.out.println(it.next());
// }
/**
* 2. key , key key ( )
*/
// Set set =map.keySet();
// Iterator it=set.iterator();
// while(it.hasNext()){
// String s= (String) it.next();
// System.out.println(map.get(s));
// }
//
/**
* 3. map entry , entry key
*/
Set set =map.entrySet();
Iterator it=set.iterator();
while(it.hasNext()){
Map.Entry<String, String> entry=(Entry<String, String>) it.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
}