1. 程式人生 > >Java 中對於列舉雙值的使用

Java 中對於列舉雙值的使用

 轉成鍵值對或者是map 的形式;

鍵值對的類

public class Kav {

	/**
	 * 鍵
	 */
	private String key;

	/**
	 * 值
	 */
	private String value;

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}
}

列舉:

public enum AprrovalStatus {
	COMMITED(1L, "待審批"), 
	APPROVALED(2L, "已審批通過"), 
	REJECTED(3L, "已拒絕"), 
	SYNCHRONIZED(4L, "已同步"),
	EXPIRED(5L,"已失效"),
	TEMPORARY(6L,"暫存"),
	REMOVE(7L,"撤回");

	private final Long key;
	private final String value;

	public Long getKey() {
		return key;
	}

	public String getValue() {
		return value;
	}

	AprrovalStatus(Long key, String value) {
		this.key = key;
		this.value = value;
	}

	/**
	 * 根據key獲取value
	 * 
	 * @param key
	 *            : 鍵值key
	 * @return String
	 */
	public static String getValueByKey(String key) {
		AprrovalStatus[] enums = AprrovalStatus.values();
		for (int i = 0; i < enums.length; i++) {
			if (enums[i].getKey().equals(key)) {
				return enums[i].getValue();
			}
		}
		return "";
	}

	/**
	 * 轉換為'KAV'列表
	 * 
	 * @return List<Kav>
	 */
	public static List<Kav> toKavs() {
		List<Kav> l_kavs = new ArrayList<Kav>();
		AprrovalStatus[] enums = AprrovalStatus.values();
		for (int i = 0; i < enums.length; i++) {
			Kav kav = new Kav();
			kav.setKey(enums[i].getKey().toString());
			kav.setValue(enums[i].getValue());
			l_kavs.add(kav);
		}
		return l_kavs;
	}

	/**
	 * 轉換為MAP集合
	 * 
	 * @returnMap<String, String>
	 */
	public static Map<String, String> toMap() {
		Map<String, String> map = new HashMap<String, String>();
		AprrovalStatus[] enums = AprrovalStatus.values();
		for (int i = 0; i < enums.length; i++) {
			map.put(enums[i].getKey().toString(), enums[i].getValue());
		}
		return map;
	}
}

對於單隻列舉的使用:

public enum MistakeHandleStatusEnum {

	HANDLED("已處理"),

	NOHANDLE("未處理");

	private String desc;

	private MistakeHandleStatusEnum(String desc) {
		this.desc = desc;
	}

	public String getDesc() {
		return desc;
	}

	public static MistakeHandleStatusEnum getEnum(String name) {
		MistakeHandleStatusEnum[] arry = MistakeHandleStatusEnum.values();
		for (int i = 0; i < arry.length; i++) {
			if (arry[i].name().equals(name)) {
				return arry[i];
			}
		}
		return null;
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static List toList() {
		MistakeHandleStatusEnum[] ary = MistakeHandleStatusEnum.values();
		List list = new ArrayList();
		for (int i = 0; i < ary.length; i++) {
			Map<String, String> map = new HashMap<String, String>();
			map.put("desc", ary[i].getDesc());
			map.put("name", ary[i].name());
			list.add(map);
		}
		return list;
	}

}

相關推薦

Java 對於列舉的使用

 轉成鍵值對或者是map 的形式; 鍵值對的類 public class Kav { /** * 鍵 */ private String key; /** * 值

java變量賦的理解

char 顯示 值類型 輸出結果 運算 都是 數字 理解 double 1.當賦值的值超出聲明變量的範圍時候,會報錯! byte a =200 //會報錯,因超出範圍。 byte a =(byte)200;//進行一個強制轉換,就不會報錯,不過會超出範圍,超出部分會從頭開始

java參數傳遞--傳遞,引用傳遞

新的 結果 html 參數傳遞 參數 一個 程序員 java中的對象 傳參 java中的參數傳遞——值傳遞、引用傳遞 參數是按值而不是按引用傳遞的說明 Java 應用程序有且僅有的一種參數傳遞機制,即按值傳遞。 在 Java 應用程序中永遠不會傳遞對象,而只傳遞對象

如何在Java獲取鍵盤輸入

我們 比較 函數 姓名 ner clas exceptio 但是 put 1 程序開發過程中,需要從鍵盤獲取輸入值是常有的事,但Java它偏偏就沒有像c語言給我們提供的scanf(),C++給我們提供的cin()獲取鍵盤輸入值的現成函數!Java沒有提供這樣的函數也不代

Java使用有返回的線程

catch int 獲取 == ava executors RoCE service stack 在創建多線程程序的時候,我們常實現Runnable接口,Runnable沒有返回值,要想獲得返回值,Java5提供了一個新的接口Callable,可以獲取線程中的返回值,但是獲

java對於redis的簡單操作

java info img png .com 圖片 jar包 9.png com 添加redis的jar包 java中對於redis的簡單操作

java對於多態的理解

運行 之間 () sta java eof 唱歌 bsp 如果 面向對象: 類:具體的對象抽象而來,可以抽象的表示一類具有相同特征和行為的對象 對象:是由類的實例化而來,對象是類的一個實例 java中關於多態的理解 打個比方 父親person有行為這

利用 Lambda 表達式實現 Java 的惰性求

predicate 由於 pri 創建 truct 不能 當我 from 包裝 Java 中惰性求值的潛能,完全被忽視了(在語言層面上,它僅被用來實現 短路求值 )。更先進的語言,如 Scala,區分了傳值調用與傳名調用,或者引入了 lazy 這樣的關鍵字。 盡管 Java

Java字串直接賦和new一個物件,得到的地址是什麼樣子的

  public class StringDemo2 { public static void main(String[] args) { String s1 = "hello"; String s2 = new String("hello"); String s3 = "hello"

Java未給定初始的基礎資料型別為什麼不能輸出 ——Thinking in Java學習筆記(二)

在java程式設計思想第二章節中有這麼一個練習題:定義一個類,給定兩個無初始值的int和char型別的數值,輸出兩個數的值,驗證int和char的初始值。 我第一次是這麼做的: public static void main(String[] args) { int i; char

JAVA對於需要頻繁new的物件的一個優化的方法

在實際開發中,某些情況下,我們可能需要頻繁去建立一些物件(new),下面介紹一種,我從書上看到的,可以提高效率的方法。 首先,對於將會頻繁建立的物件,我們要讓這個類實現Cloneable介面,因為這個優化的核心,就是利用clone。 clone的最大特點就是,不會去呼叫任何構造方法,所以,在

基於本地redis、protostuff序列化對於資料層的優化及java對於泛型的使用

此次對於redis、protostuff的應用是在一個高併發的秒殺系統中實現的。 在高併發的秒殺系統的優化中主要有以下幾個方面: 1.對於獲取秒殺地址的介面的優化 每次獲取秒殺介面我們都要訪問資料庫,在高併發的系統中我們可以使用redis快取進行優化,不需要每次都訪問資料庫,從

聊聊java列舉

1、列舉類是 java.lang.Enum 類的子類,其中RED、GREEN、YELLOW都是Light預定義好的Light的例項。 在執行期間,我們無法再建立新的Enum的例項 public enum Light {    

扒一扒: Java 列舉

在 Java 中, 列舉, 也稱為列舉型別, 其是一種特殊的資料型別, 它使得變數能夠稱為一組預定義的常量。 其目的是強制編譯時型別安全。 因此, 在 Java 中, enum 是保留的關鍵字。 1. 列舉的定義 在 Java 是在 JDK 1.4 時決定引入的, 其在 JDK 1

Java對於httpClient的非同步請求處理

注意:使用這個前提要匯入相對應的jar包,這裡使用的是Apache的httpComponents; 直接在pom.xml檔案里加入: <dependency> <groupId>org.apache.httpcomponents</groupId>

java對於Date時間的各種用法和方法總結

在java中經常會用到和時間日期有關的各種操作,今天就對於Date的幾中常用的用法做一個總結: -Date類 : 1.表示日期的類 2.提供了很多的操作日期的方法,但是很多方法被java標記為過時 public class TestDateAPIClass { @Test

java對於字串 XX.toString和String.valueOf()以及強制型別轉換的區別

今天在寫程式碼的時候遇到很多需要型別轉換的東西 ,特別是需要轉換到String型別。好幾次都報錯了,特此記錄一下這三者之間的區別 toString方法 先看一下API對toString方法的描述 返回該物件的字串表示。通常,toString 方法會返回一個“以文

java 方法引數是傳遞還是引用傳遞 ?

物件是引用傳遞,原始型別資料是值傳遞 實際上把方法引數中物件引數看做是物件的引用,那麼物件引用也是值傳遞 它符合值傳遞的一切的特徵,即我們可以通過物件引用的引數去改變它所指向物件的屬性,但我們卻無法改變這個物件引用引數所指向的物件。

Java對於模態框的使用以及在多執行緒的應用

模態框可以通過繼承JDialog並且設定構造引數boolean modal = true即可。 但是 當此模態框setVisible(true)時候,會導致當前執行緒阻塞。 那麼問題來了:現有一需求是點選登陸按鈕,則會向伺服器傳送登陸請求以及獲取資料的請求,待伺服器成功返回響應即可登陸主介面

JAVAString直接賦與new出來的物件賦的區別

舉個例子,比如 String  she = "fdasfdg" 與 String she = new String("fdasfdg"); 他們到底有什麼區別?   String  she = "f