Python WeChat 注文アプレット コース ビデオ
https://edu.csdn.net/course/detail/36074
Pythonによる実践的な定量取引財務管理システム
https://edu.csdn.net/course/detail/35475
1. 背景
Java 列挙は、一般に、1 年の四季、12 か月、1 週間の 7 日間、南東、北西の方向などの一連の定数を表す特別なクラスです。
最近の仕事で他の多くのシステムとドッキングしましたが、ドッキングした同じシステムに異なる環境 (開発、テスト、正式環境) があり、各環境の構成情報は通常は変更されないため、列挙が使用されていることがわかりました。構成用です。項目の使用は比較的簡単です。異なる環境構成では、もう 1 つの列挙値を定義するだけで済みます。
列挙型の使用には、渡された値を通じて対応する列挙型を返すことが含まれます。
2. 値を通じて、クエリは対応する列挙を返します (サンプル コード)
2.1. 列挙型クラス
@Getter
public enum CustomType {
TEST("test","测试","111"),
DEV("dev","开发","222");
String typeCode;
String typeName;
String orgId;
CustomType(String typeCode, String typeName, String orgId) {
this.typeCode = typeCode;
this.typeName = typeName;
this.orgId = orgId;
}
}
2.2. 一般的に使用される列挙メソッド、values()、ordinal()、および valueOf() メソッド
enum によって定義された列挙クラスは、デフォルトで java.lang.Enum クラスを継承し、2 つのインターフェイス java.lang.Seriablizable および java.lang.Comparable を実装します。
value()、ordinal()、および valueOf() メソッドは、java.lang.Enum クラスにあります。
- value() は列挙クラス内のすべての値を返します。
- ordinal() メソッドは、配列インデックスと同様に、各列挙定数のインデックスを見つけることができます。
- valueOf() メソッドは、指定された文字列値の列挙定数を返します。
値を渡して列挙をクエリするには、values() メソッドを通じてすべての列挙を返し、すべての列挙をスキャンします。渡されたパラメータ値が現在の列挙の値と同じである限り、現在の列挙が返されます。 ;
2.3. 1 つ以上の値を渡して、対応する列挙を返します。
public CustomType find(String typeCode){
for (CustomType value : CustomType.values()) {
if(typeCode.equals(value.getTypeCode())){
return value;
}
}
//根据自身的业务 查不到可以返回null,或者抛出异常。
return null;
}
public CustomType find(String orgId,String typeCode){
if(orgId == null || typeCode == null){
return null;
}
for (CustomType value : CustomType.values()) {
if(orgId.equals(value.getOrgId()) &&
typeCode.equals(value.getTypeCode())){
return value;
}
}
//根据自身的业务 查不到可以返回null,或者抛出异常。
return null;
}
3. 検索の最適化
value() メソッドを使用して検索を実行するたびに、時間計算量は O(n) ですが、HashMap 検索の時間計算量は O(1) です。
通常、列挙の数はそれほど大きくありませんが、values() メソッドによる各走査検索も非常に高速です。HashMap を使用すると、もう少し多くのメモリが必要になりますが、これを考慮すると、メモリの時間計算量を O(n) から O(1) に減らすことができます。これはコスト効率が高く、コードの最適化に時間を費やすことができます。 。
private static Map<String,CustomType> orgCustomType = new HashMap<>();
static {
for (CustomType value : CustomType.values()) {
orgCustomType.put(value.getOrgId(),value);
}
}
public CustomType find(String orgId){
return orgCustomType.get(orgId);
}