es6 マップは参照型ですか?
Map は参照型です。map (コレクション) は、es6 の新しい参照データ型であり、データのマッピング関係を表します。マップ コレクション データ型のデータは、「キー/値」方式で保存されます。オブジェクトのプロパティをキーとして使用し、そのプロパティを使用して値を参照できます。マップは、new を使用して作成できます。たとえば、「const」 myMap = new Map();" 。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
map は参照型です。
es6 マップ
ES6 より前では、JavaScript で 'key'=>'value' (よくキーと値のペアと呼ばれるもの) を実装するには、次のようにします。オブジェクトを使用して完了します。ただし、この実装方法には特殊なシナリオでは問題があり、ES6 では、言語に真のキーと値のペアの保存メカニズムをもたらす Map と呼ばれる新しいコレクション タイプが導入されました。
map (コレクション) は、es6 の新しい参照データ型で、データのマッピング関係を表します。マップ コレクション データ型のデータは「キー/値」方式で保存され、オブジェクトのプロパティ キーとして、プロパティを使用して値を参照します。
new
キーワードを使用してマップをインスタンス化します
let m = new Map(); console.log(m); // Map(0) {}
作成時の初期化:
2 次元配列パラメータを渡します (反復可能なオブジェクト、キー値は内部的に配列として渡されます)
各サブ配列の最初の要素が対応しますkey
をマップするには、2 番目の要素は value
let m = new Map([[{}, 222], [{}, '123']]); console.log(m); // Map(2) { {} => 222, {} => '123' }
#1-2-1 マッピング要素を追加します set() メソッドを通じて追加し、2 つのパラメータ、最初のキーを渡します。マップの値が最初に渡され、マップの値が 2 番目に渡されます。返されるのはマッピング セットです (連鎖的に追加できることを意味します)
let m = new Map(); m.set('prop', '值'); console.log(m); // Map(1) { 'prop' => '值' }
キー値の連鎖追加
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); console.log(m); // Map(3) { 'prop' => '值', 'prop2' => false, 'num' => { id: 13 } }
##1-2-2 マッピング長さを設定 size
属性を使用して、現在のコレクション内の要素の数を取得しますlet m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); console.log(m.size);
1-2 -3 要素の取得get() メソッドを通じて要素を取得し、ターゲットのキーを渡します##let m = new Map();
m.set('prop', '值').set('prop2', false).set('num', {id: 13});
console.log(m.get('prop2'));
// false
ログイン後にコピー
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); console.log(m.get('prop2')); // false
1-2-4要素を削除します
delete() メソッドを使用してマッピング コレクション内の要素を削除し、削除が成功したか失敗したかを示すブール値を返します let m = new Map();
m.set('prop', '值').set('prop2', false).set('num', {id: 13});
m.delete('prop2');
// true
console.log(m.get('prop2'), m.size);
// undefined 2
ログイン後にコピー
#1-2-5 要素が存在するかどうかを検出するlet m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); m.delete('prop2'); // true console.log(m.get('prop2'), m.size); // undefined 2
has()メソッドを使用して、対象の要素が存在するかどうかを検出し、検出結果のブール値を返しますlet m = new Map();
m.set('prop', '值').set('prop2', false).set('num', {id: 13});
m.delete('prop2');
// true
console.log(m.has('prop2'), m.has('num'));
// false true
ログイン後にコピー
1-2-6 要素のクリア メソッドlet m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); m.delete('prop2'); // true console.log(m.has('prop2'), m.has('num')); // false true
clear() メソッドを使用してすべての要素をクリアし、クリア成功のブール値を返しますlet m = new Map();
m.set('prop', '值').set('prop2', false).set('num', {id: 13});
m.clear();
// true
console.log(m);
// Map(0) {}
ログイン後にコピー
##1-3 反復を伴うシーケンスlet m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); m.clear(); // true console.log(m); // Map(0) {}
map は挿入順序に従って要素を反復できます マッピング インスタンス(iterator) を提供します。挿入順に [key, value] の形式で配列を生成し、entrys() メソッド (または提供された Symbol.iterator) のイテレータ インターフェイス トラバーサルを渡すことができます。 1-4 オブジェクトとの比較 メモリ使用量ブラウザこの違いにより、2 つのストレージ メソッド間でメモリ使用量が異なります。ただし、メモリ サイズを考慮すると、map は Object よりも約 50% 多くのキーと値のペアを格納します。 プログラミング ビデオ 以上がes6 マップは参照型ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。let m = new Map();
m.set('prop', '值').set('prop2', false).set('num', {id: 13});
console.log(m.entries === m[Symbol.iterator]);// true
for(let k1 of m.entries()){
console.log(k1);
// [ 'prop', '值' ]
// [ 'prop2', false ]
// [ 'num', { id: 13 } ]
// 遍历的属性即对应映射元素的键值对数组
}
for(let k2 of m.keys()){
console.log(k2);
// prop
// prop2
// num
// 遍历的属性对应映射元素的键
}
for(let k3 of m.values()){
console.log(k3);
// 值
// false
// { id: 13 }
// 遍历的属性对应映射元素的值
}
for(let k4 of m[Symbol.iterator]()){
console.log(k4);
// [ 'prop', '值' ]
// [ 'prop2', false ]
// [ 'num', { id: 13 } ]
// 遍历的属性即对应映射元素的键值对数组
}
挿入パフォーマンス
挿入速度 上記のマップとオブジェクトのパフォーマンスはほぼ同じですが、コードに多数の挿入が含まれる場合は、マップ
削除のパフォーマンス
、

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









application.yml はリスト コレクションを定義します。最初の方法は、@ConfigurationProperties アノテーションを使用して、リスト コレクション type:code:status:-200-300-400-500 のすべての値を取得することです。エンティティ クラスを記述しますここで注意が必要なのは、リスト Collection の定義では、まず設定クラス Bean を定義し、次に @ConfigurationProperties アノテーションを使用してリストコレクションの値を取得することです。 @Component はエンティティ クラスを Spring 管理 @ConfigurationPropertie に引き渡します。

1. 技術的背景 実際のプロジェクト開発では、システムの可用性と堅牢性を向上させるためにキャッシュ ミドルウェア (redis、MemCache など) を使用することがよくあります。ただし、多くの場合、プロジェクトが比較的単純であれば、キャッシュを使用するために Redis などのミドルウェアを特別に導入してシステムの複雑さを増大させる必要はありません。それでは、Java 自体には便利な軽量キャッシュ コンポーネントがあるのでしょうか?答えはもちろん「はい」であり、方法は複数あります。一般的なソリューションには、ExpiringMap、LoadingCache、および HashMap ベースのパッケージ化が含まれます。 2. 古い削除戦略、ホットスポット データのウォームアップなど、キャッシュの一般的な機能を実現するための技術的効果 3. ExpiringMap3。

非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

es5 では、for ステートメントと IndexOf() 関数を使用して配列の重複排除を実現できます。構文 "for(i=0;i<配列長;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}」。 es6 では、スプレッド演算子 Array.from() および Set を使用して重複を削除できます。まず配列を Set オブジェクトに変換して重複を削除してから、スプレッド演算子または Array.from() 関数を使用する必要があります。 Set オブジェクトを配列に変換してグループ化するだけです。

方法 1. HashtableMapashtable=newHashtable(); を使用する これは誰もが最初に考えることですが、なぜスレッドセーフなのでしょうか?次に、そのソース コードを見てみましょう。put、get、containsKey などの一般的に使用されるメソッドはすべて同期していることがわかります。そのため、スレッドセーフである publicsynchronizedbooleancontainsKey(Objectkey){Entrytab[]=table;inthash=key。 hashCode( );intindex=(hash&0x7FFFFFFF)%tab.leng

Javabean とマップを変換するには、次のようなさまざまな方法があります: 1. ObjectMapper を介して Bean を json に変換し、次に json をマップに変換します。しかし、この方法は複雑で非効率です。テスト後、10,000 個の Bean がループで変換されました。 12秒かかります! ! ! 2. Java リフレクションを通じて Bean クラスの属性と値を取得し、マップに対応するキーと値のペアに変換する この方法は次善の方法ですが、少し面倒です。 3. クラスの net.sf.cglib.beans.BeanMap メソッドを使用するこのメソッドは非常に効率的ですが、2 番目のメソッドとの違いは、キャッシュを使用するため、最初に Bean を初期化する必要があることです。作成した。

Go 言語マップのパフォーマンスの最適化 Go 言語では、マップは非常に一般的に使用されるデータ構造であり、キーと値のペアのコレクションを保存するために使用されます。ただし、大量のデータを処理すると、マップのパフォーマンスが低下する可能性があります。マップのパフォーマンスを向上させるために、いくつかの最適化措置を講じてマップ操作の時間の複雑さを軽減し、それによってプログラムの実行効率を向上させることができます。 1. マップ容量の事前割り当て: マップを作成するときに、容量を事前に割り当てることで、マップの拡張回数を減らし、プログラムのパフォーマンスを向上させることができます。一般的に、私たちは

Map ディレクティブは ngx_http_map_module モジュールを使用します。デフォルトでは、nginx は人為的に --without-http_map_module を指定しない限り、このモジュールをロードします。 ngx_http_map_module モジュールは、その値が他の変数の値に関連付けられた変数を作成できます。複数の値を分類したり、複数の異なる値に同時にマッピングしたり、変数に保存したりすることができます。マップ ディレクティブは変数の作成に使用されますが、変数が受け入れられた場合にのみビュー マッピング操作を実行します。変数を参照しないリクエストを処理する場合、このモジュールにはパフォーマンス上の欠点はありません。 1.ngx_http_map_module モジュール命令説明マップの構文
