タグ

Collectionに関するkiyo_hikoのブックマーク (49)

  • Converting VBA Collection to Array

    kiyo_hiko
    kiyo_hiko 2024/02/07
    ありがたい…。
  • VBA 配列とコレクションの違いをメモリ上のデータ構造から理解する - t-hom’s diary


    VBA 使   Integer Dim Arr(3) As Integer Arr(0) = 10 Arr(1) = 20 Arr(2) = 30 Arr(3) = 40 VBAInteger22 Long Dim Arr(3) As Long Arr(0) = 100 Arr(1) = 200 Arr(2
    VBA 配列とコレクションの違いをメモリ上のデータ構造から理解する - t-hom’s diary
    kiyo_hiko
    kiyo_hiko 2019/05/09
    コレクションが連結リストな話
  • エクセルVBA 配列の速度比較


    ExcelVBA使使使 VBA使3?(10,000,000)  Dim Dimtest(10000000) As String Do DoEvents Dimtest(i) = "" & i If i = 10000000 Then Exit Do End If i
    エクセルVBA 配列の速度比較
    kiyo_hiko
    kiyo_hiko 2019/05/09
    意外にもコレクションが優秀であるという結果読んでビックリ
  • VBScriptのディクショナリの参照の罠 - Qiita

    VBScriptには辞書型のオブジェクト Scripting.Dictionary があります。 が、このオブジェクトにはちょっとした罠が潜んでいます。 それは「存在しないキーに対して値を取得しようとするとキーを作成してしまう」というものです。 項目を変更するときに引数 key で指定したキーが見つからない場合、newitem で指定した項目と関連付けられた、引数 key で指定した新しいキーが作成されます。また、既存の項目を取得するときに引数 key で指定したキーが見つからない場合は、空の項目と関連付けられた、引数 key で指定した新しいキーが作成されます。 以下、実際に試したコードです。 Option Explicit Dim objDict, sKey Set objDict = CreateObject("Scripting.Dictionary") ' "hoge" キーを追

    VBScriptのディクショナリの参照の罠 - Qiita
    kiyo_hiko
    kiyo_hiko 2019/04/24
    これはひどい仕様だ。説明がないと気づかない
  • 『Listのfor文と拡張for文およびIteratorの実行アクセス速度』


    JavaArrayListLinkedList Java ArrayListLinkedList使forforIterator 2使LinkedListArrayList使  2public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, ja
    『Listのfor文と拡張for文およびIteratorの実行アクセス速度』
    kiyo_hiko
    kiyo_hiko 2016/05/23
    暗黙のボクシングを挟むので差が出るらしいという話
  • ハッシュに対する繰り返し処理

    ハッシュオブジェクトは範囲オブジェクトや配列オブジェクトと同じく複数の要素を持つオブジェクトです。繰り返し処理を使うことでハッシュオブジェクトから順に要素を取得して処理を行うことができます。ここでは Ruby でハッシュオブジェクトに対して繰り返し処理を行う方法を解説します。

    ハッシュに対する繰り返し処理
    kiyo_hiko
    kiyo_hiko 2015/12/04
    hash.each { |k, v| ... } // each_key // each_value
  • Enumerable#include? (Ruby 3.3 リファレンスマニュアル)

    member?(val) -> bool[permalink][rdoc][edit] include?(val) -> bool val と == の関係にある要素を含むとき真を返します。 [PARAM] val: 任意のオブジェクト 例 [2, 4, 6].include? 2 #=> true [2, 4, 6].include? 1 #=> false [2, 4, 6].member? 2 #=> true [2, 4, 6].member? 1 #=> false

    kiyo_hiko
    kiyo_hiko 2015/11/24
    memberが使える。xs.member? x
  • Is it possible to iterate three arrays at the same time?

    We can iterate two arrays at the same time using Array's zip method like: @budget.zip(@actual).each do |budget, actual| ... end Is it possible to iterate three arrays? Can we use the transpose method to do the same?

    Is it possible to iterate three arrays at the same time?
    kiyo_hiko
    kiyo_hiko 2015/11/11
    すごい雑だがxs.zip(ys).zip(zs).map{ |xyz| xyz.flatten }的なものでやっつけた
  • How do I implement Common Lisp's mapcar in Ruby?

    I want to implement Lisp's mapcar in Ruby. Wishful syntax: mul = -> (*args) { args.reduce(:*) } mapcar(mul, [1,2,3], [4,5], [6]) would yield [24, nil, nil]. Here is the solution I could think of: arrs[0].zip(arrs[1], arrs[2]) => [[1, 4, 6], [2, 5, nil], [3, nil, nil]] Then I could: [[1, 4, 6], [2, 5, nil], [3, nil, nil]].map do |e| e.reduce(&mul) unless e.include?(nil) end => [24, nil, nil] But I'

    How do I implement Common Lisp's mapcar in Ruby?
    kiyo_hiko
    kiyo_hiko 2015/11/11
    zip使ってmapcarもどき作る話。zipはreciever.zip(the_other)で二次元配列になる
  • Array#sort (Ruby 3.3 リファレンスマニュアル)

    sort -> Array[permalink][rdoc][edit] sort! -> self sort {|a, b| ... } -> Array sort! {|a, b| ... } -> self 配列の内容をソートします。要素同士の比較は <=> 演算子を使って行います。sort はソートされた配列を生成して返します。 sort! は self を破壊的にソートし、self を返します。 ブロックとともに呼び出された時には、要素同士の比較をブロックを用いて行います。ブロックに2つの要素を引数として与えて評価し、その結果で比較します。ブロックは <=> 演算子と同様に整数を返すことが期待されています。つまり、ブロックは第1引数が大きいなら正の整数、両者が等しいなら0、そして第1引数の方が小さいなら負の整数を返さなければいけません。両者を比較できない時は nil を返します。

    kiyo_hiko
    kiyo_hiko 2015/11/11
    宇宙船演算子でソートする
  • Array#filter (Ruby 3.3 リファレンスマニュアル)

    select -> Enumerator[permalink][rdoc][edit] filter -> Enumerator select {|item| ... } -> [object] filter {|item| ... } -> [object] 各要素に対してブロックを評価した値が真であった要素を全て含む配列を返します。真になる要素がひとつもなかった場合は空の配列を返します。 ブロックを省略した場合は Enumerator を返します。 例 [1,2,3,4,5].select # => #<Enumerator: [1, 2, 3, 4, 5]:select> [1,2,3,4,5].select { |num| num.even? } # => [2, 4] [SEE_ALSO] Enumerable#select [SEE_ALSO] Array#select!

    kiyo_hiko
    kiyo_hiko 2015/11/11
    remove-if-notとかfilter的な // even_upto_10 = 1.upto(10).select { |n| n % 2 == 0 }
  • Hash#keys (Ruby 3.3 リファレンスマニュアル)

    keys -> [object][permalink][rdoc][edit] 全キーの配列を返します。 例 h1 = { "a" => 100, 2 => ["some"], :c => "c" } p h1.keys #=> ["a", 2, :c] [SEE_ALSO] Hash#values,Hash#to_a

    kiyo_hiko
    kiyo_hiko 2015/11/11
    mをマップのインスタンスとすると、m.keys
  • Array to Hash Ruby

    Convert this Array: a = ["item 1", "item 2", "item 3", "item 4"] ...to a Hash: { "item 1" => "item 2", "item 3" => "item 4" } i.e. elements at even indexes are keys and odd ones are values.

    Array to Hash Ruby
    kiyo_hiko
    kiyo_hiko 2015/10/20
    通常はflattenしてHash[*flat_array]、2.1.0以降to_hが使えるので2次元な[[a,b],[c,d],...].to_hでハッシュ化できる。2次元化するなら1.upto(100).each_slice(2)的にやる
  • ビットフィールド - Wikipedia

    ビットフィールド (英: bit field) は、プログラミングにおいてブーリアン型のフラグをコンパクトなビットの並びとして格納する手法である。ビットフィールドの格納には、整数型を使用する。個々のフラグは、ビット単位で格納される。通常は、ソースコードで、個別のビットがフラグに対応する意味を付けられた、2の冪乗の定数が定義される。ビット演算の論理積・論理和・否定の組み合わせが、フラグのセット・リセットとテストを行うために使われる。 ビットフィールドはビット配列(英語版)とは異なる。ビット配列は、整数でインデックスを付けられた大きなビットの集合を保存するために使用され、コンピュータ言語でサポートされる整数型よりも大きいことがある。一方、ビットフィールドは典型的にはワードサイズの範囲内であり、各ビットを参照する表記法は数値によるインデックスから独立している。ただし、ビットフィールドを用いるより

    kiyo_hiko
    kiyo_hiko 2015/10/15
    ビットフラグ呼ばわりしていたが、一般的にはビットフィールドと言うっぽい
  • Hash#merge (Ruby 3.3 リファレンスマニュアル)

    merge(*others) -> Hash[permalink][rdoc][edit] merge(*others) {|key, self_val, other_val| ... } -> Hash selfとothersのハッシュの内容を順番にマージ(統合)した結果を返します。デフォルト値はselfの設定のままです。 self と others に同じキーがあった場合はブロック付きか否かで判定方法が違います。ブロック付きのときはブロックを呼び出してその返す値を重複キーに対応する値にします。ブロック付きでない場合は常に others の値を使います。 othersがハッシュではない場合、othersのメソッドto_hashを使って暗黙の変換を試みます。 [PARAM] others: マージ用のハッシュまたはメソッド to_hash でハッシュに変換できるオブジェクトです。 [RET

    kiyo_hiko
    kiyo_hiko 2015/10/14
    a.merge b # => new hash、merge! => 破壊されたa。aとbで同じキーがあればbで上書きされる
  • JavaでもC#みたいなオブジェクト初期化子書けるんですよ - C Sharpens you up

    コンストラクタが特に何もしてくれず、インスタンス作ってから初期化しないといけないタイプのクラスってありますよね。シリアライズのためだったりJavaBeansだったり、あとはふつーのArrayListだから作ってから内容詰め込みます、みたいに。 オブジェクト作ってreturnしたいだけなのに、作ったあとに初期化しないといけないから一時変数作るのがいつも一手余分で、一行で書けるラムダ式がブロックラムダになったりするといらいらもたまるというものです。 C#にはオブジェクト初期化子があるのでその余分な一手が省けますね。 return new Person { Name = "Alice", Age = 20 }; return new List<int> { 1, 1, 2, 3, 5, 8, }; return new Dictionary<int, String> { { 200, "OK"

    JavaでもC#みたいなオブジェクト初期化子書けるんですよ - C Sharpens you up
  • GS-Collections-by-Example-1


    jClarityGS Collections便使 Java8Stream APIGS Collections使Stream APIJavaGS CollectionsMultimapBagHashSetHashMapBagMultimapGS Collections
    GS-Collections-by-Example-1
  • [Java] Java5とJava1.4の夢のコラボレーション-ウンコード・マニア

    Listが大好きでJavaBeanを作るのは嫌だったんでしょうか。 担当者が途中でギブアップして作れなくなってしまい、続きをなんとか作ってくれとお願いされ 渡されたソースがこんな感じだったそうです。 public class GyoumGamen1 { public List<List> getData() { List<List> list = new ArrayList<List>(); List subList1 = new ArrayList(); subList1.add(1); subList1.add("ColumnDataA1"); subList1.add(2); subList1.add("ColumnDataB1"); list.add(subList1); List subList2 = new ArrayList(); subList2.add(1); subLi

    kiyo_hiko
    kiyo_hiko 2014/05/07
    これならデータが固まってればPair<K,V>作ってList<Pair<K,V>>にするし、変更可能性のあるデータならデータのクラスを書いてしまうなあ。
  • 配列の要素に特定の値が含まれているかチェックする方法 - Java 入門


      "", "", ""   ""  false  "" ""  true   java.util.Arrays     contains contains  contains 
    配列の要素に特定の値が含まれているかチェックする方法 - Java 入門
    kiyo_hiko
    kiyo_hiko 2013/09/24
    ふつうにArrays.asListでいいのか。
  • ConcurrentModificationExceptionのスマートな回避方法 - OKWAVE


    ConcurrentModificationException Set<Integer> set = new HashSet<Integer>(); for (int i = 0 ; i < 10 ; i++) { set.add(i); } //  for (Integer currValue : set) { if (currValue % 2 == 0) { set.remove(currValue); } } for (Integer currValue : set) { System.out.println(currValue + " "); }  Set<Intege
    ConcurrentModificationExceptionのスマートな回避方法 - OKWAVE
    kiyo_hiko
    kiyo_hiko 2013/09/16
    別に並行処理のつもりでなくても"Concurrent~"がでてビビる for-eachでフィルタリングできないよというのはたしかJavaチュートリアル第4版で読んだ気が。忘れてた → 見直したらIteratorのremoveが唯一安全と書いてあった