A. java中list裡面存放map,根據map中的某兩個個欄位進行排序
用Collections.sort(List list, Comparator c)
實現一個Comparator即可
public class MyComparator implements Comparator {
public int compare(Object o1, Object o2) {
Map m1=(Map)o1, m2=(Map)o2;
//從m1與m2取欄位值然後比較,大於返回版1,等於返回0,小於返回-1
}
public boolean equals(Object o) {
//同上權面類似
}
B. java sortedmap和treemap的區別
sortedmap是一個interface,而treemap是一個class,而且treemap implements sortedmap。
C. java中map如何按double排序
java中map按照double大小進行排序,可以使用collentions介面的sort方法進行比較,實例如下:
Collections.sort(dataMap,newComparator<Map<String,Object>>(){
@Override
publicintcompare(Map<String,Object>lhs,Map<String,Object>rhs){
Doubled5=((Double)rhs.get(OpenPrice));
Doubled6=(Double)lhs.get(OpenPrice);
if(d5!=null&&d6!=null){
returnd5.compareTo(d6);
}else{
returnflag;
}
//returnd1.compareTo(d2);
}
根據返回的int類型,可設置按照從大到小還是從小到大排序
D. java 監聽redis map是否有修改
/**
* @param args
*/
public static void main(String[] args) {
//連接 redis 服務
Jedis jedis = new Jedis( "192.168.88.15" ,6379);
//密碼驗證-如果你沒有設置 redis 密碼可不驗證即可使用相關命令
// jedis.auth(" abcdefg ");
//簡單的key-value 存儲
jedis.set( "redis" , "myredis" );
System. out .println(jedis.get( "redis" ));
//在原有值得基礎上添加,如若之前沒有該key,則導入該key
//之前已經設定了 redis 對應" myredis ",此句執行便會使 redis 對應"myredisyourredis "
jedis.append( "redis" , "yourredis" );
jedis.append( "content" , "rabbit" );
// mset 是設置多個key-value值 參數(key1,value1,key2,value2,..., keyn , valuen)
// mget 是獲取多個key所對應的value值 參數(key1,key2,key3,..., keyn ) 返回的是個list
jedis.mset( "name1" , "yangw" , "name2" , "demon" , "name3" , "elena" );
System. out .println(jedis.mget( "name1" , "name2" , "name3" ));
//map
Map<String,String> user = new HashMap<String,String>();
user.put( "name" , "cd" );
user.put( "password" , "123456" );
//map存入 redis
jedis.hmset( "user" , user);
// mapkey 個數
System. out .println(String. format ( "len:%d" , jedis.hlen( "user" )));
//map中的所有鍵值
System. out .println(String. format ( "keys: %s" , jedis.hkeys( "user" ) ));
//map中的所有value
System. out .println(String. format ( "values: %s" , jedis.hvals( "user" ) ));
//取出map中的name欄位值
List<String> rsmap = jedis.hmget( "user" , "name" , "password" );
System. out .println(rsmap);
//刪除map中的某一個鍵值 password
jedis.hdel( "user" , "password" );
System. out .println(jedis.hmget( "user" , "name" , "password" ));
//list
jedis.del( "listDemo" );
System. out .println(jedis.lrange( "listDemo" , 0, -1));
jedis.lpush( "listDemo" , "A" );
jedis.lpush( "listDemo" , "B" );
jedis.lpush( "listDemo" , "C" );
System. out .println(jedis.lrange( "listDemo" , 0, -1));
System. out .println(jedis.lrange( "listDemo" , 0, 1));
//set
jedis.sadd( "sname" , "wobby" );
jedis.sadd( "sname" , "kings" );
jedis.sadd( "sname" , "demon" );
System. out .println(String. format ( "set num: %d" , jedis.scard( "sname" )));
System. out .println(String. format ( "all members: %s" , jedis.smembers( "sname")));
System. out .println(String. format ( "is member: %B" , jedis.sismember( "sname" , "wobby" )));
System. out .println(String. format ( "rand member: %s" , jedis.srandmember("sname" )));
//刪除一個對象
jedis.srem( "sname" , "demon" );
System. out .println(String. format ( "all members: %s" , jedis.smembers( "sname")));
}
二、將自定義對象保存到redis中:
1、自定義pojo 實現Serializable 介面:
package cn.mingyuan.redis;
import java.io.Serializable;
/**
* 測試用 pojo ,實現了 Serializable ,以便進行系列化操作
*
* @author mingyuan
*
*/
public class Person implements Serializable {
private static final long serialVersionUID = -3562550857760039655L;
private String name ;
private int age ;
public Person(){}
public Person(String name, int age) {
super ();
this . name = name;
this . age = age;
}
public String getName() {
return name ;
}
public void setName(String name) {
this . name = name;
}
public int getAge() {
return age ;
}
public void setAge( int age) {
this . age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]" ;
}
}
2、測試類:
package cn.mingyuan.redis;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import redis.clients.jedis.Jedis;
public class Test {
/**
* @param args
* @throws IOException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException,
ClassNotFoundException {
// Jedis redis = new Jedis ("192.168.88.15");
Jedis redis = new Jedis( "192.168.88.15" , 6379);
// connect可以不要,因為在執行set操作的時候會先進行判斷客戶端是否於伺服器端建立了連接,若無,則啟動連接過程
redis.connect();
String set = redis.set( "mingyuan" , "1" );
System. out .println( " set result \t" + set);
redis.incr( "mingyuan" );
String string = redis.get( "mingyuan" );
System. out .println( " get result of key 'mingyuan' \t" + string);
// 下面是對對象進行存儲的測試代碼
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
Person person = new Person( "liudehua" ,22);
oos.writeObject(person);
byte [] byteArray = bos.toByteArray();
oos.close();
bos.close();
String setObjectRet = redis.set( "mingyuan" .getBytes(), byteArray);
System. out .println( " set object return \t" + setObjectRet);
byte [] bs = redis.get( "mingyuan" .getBytes());
ByteArrayInputStream bis = new ByteArrayInputStream(bs);
ObjectInputStream inputStream = new ObjectInputStream(bis);
Person readObject = (Person) inputStream.readObject();
System. out .println( " read object \t" + readObject.toString());
inputStream.close();
bis.close();
redis.disconnect();
}
}
E. 關於java的容器類 list,map等的toString()方法
我今天也遇到了同樣的問題,翻了下api搞懂了一點。
List是一個介面,你使版用List肯定沒法直接權new一個對象出來,常見的是new一個ArrayList類的對象,向上轉型賦給List介面的對象。那所以在調用List介面對象的toString方法也就是在調用ArrayList的toString方法了。
我查了jdk的api,發現所有實現了List介面的類,只有CopyOnWriteArrayList這個類不是同時繼承自AbstractCollection類的。其他實現了List介面的類都同時繼承自AbstractCollection類,所以它們都有AbstractCollection類的toString方法。
而且,CopyOnWriteArrayList類雖然沒有繼承AbstractCollection類,但是自己重寫了toString方法。
所以,使用到List對象的地方肯定是一個上轉型對象,否則無法實例化,而所有的實現List介面的類都有一個重寫後的toString方法。因此,即使沒看到List介面有對toString的定義,它的對象卻有著可讀性強的toString方法。
F. java中定義Map 報錯 求解!!!!!!!!!!
您的報錯信息意來思是,源您沒有給集合Map提供參數類型,現在集合對泛型有很好的應用:
protected Map<String,String> getKeyMethodMap() {
Map<String,String> map = new HashMap<String,String>();
map.put("login","adminLogin");
return map;
}