タグ付けされた質問 「collections」

コレクションAPIは、オブジェクトのコレクションの処理を容易にする一連のクラスとインターフェースを開発者に提供します。

1
Java 8 Streamを使用して、いくつかのクラスプロパティからリストを取得するにはどうすればよいですか?
私は持っていList<Person>ます。のListプロパティからを取得する必要がありますPerson。 たとえば、私はPersonクラスを持っています: class Person { private String name; private String birthDate; public String getName() { return name; } public String getBirthDate() { return birthDate; } Person(String name) { this.name = name; } } List<Person> personList = new ArrayList<>(); personList.add(new Person("David")); personList.add(new Person("Joe")); personList.add(new Person("Michel")); personList.add(new Person("Barak")); 次のStreamように、APIを使用して名前のリストを取得します。 List<String> names = …


8
ConcurrentModificationExceptionがスローされる理由とそのデバッグ方法
私はCollection(HashMapJPAによって間接的に使用されているため、そうなります)を使用していますが、明らかにランダムにコードがをスローしConcurrentModificationExceptionます。何が原因で、この問題を解決するにはどうすればよいですか?同期を使用することで、おそらく? ここに完全なスタックトレースがあります: Exception in thread "pool-1-thread-1" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(Unknown Source) at java.util.HashMap$ValueIterator.next(Unknown Source) at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555) at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296) at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169) at org.hibernate.engine.Cascade.cascade(Cascade.java:130)

8
Javaで連続した整数のリストまたは配列を生成するにはどうすればよいですか?
短いと甘い生成する方法があるList<Integer>、または多分 Integer[]またはint[]、いくつかの連続した値でstartの値end値は? つまり、次のものよりも短いが1に相当するものです。 void List<Integer> makeSequence(int begin, int end) { List<Integer> ret = new ArrayList<>(end - begin + 1); for (int i=begin; i<=end; i++) { ret.add(i); } return ret; } グアバの使用は問題ありません。 更新: パフォーマンス分析 この質問は、ネイティブJava 8とサードパーティのライブラリの両方を使用して、いくつかの良い答えを受け取ったので、すべてのソリューションのパフォーマンスをテストすると思いました。 最初のテスト[1..10]は、次のメソッドを使用して、10要素のリストの作成をテストするだけです。 classicArrayList:私の質問で上記のコード(そして基本的にはadarshrの回答と同じ)。 eclipseCollections:Eclipseコレクション8.0を使用して、以下のドナルドの回答で提供されるコード。 guavaRange:以下のdavebの回答で与えられたコード。技術的には、これはaを作成するのList<Integer>ではなく、aを作成します。ただし、順序どおりにContiguousSet<Integer>実装さIterable<Integer>れるため、ほとんどの場合私の目的で機能します。 intStreamRange:以下のVladimirの回答に記載されているコードを使用IntStream.rangeClosed()します。これはJava 8で導入されました。 streamIterate:Java 8で導入された機能も使用する、以下のCatalinの回答に示されているコードIntStream 上記のすべてのサイズ10のリストについて、1秒あたりのキロオペレーションの結果を次に示します(数値が大きいほど優れています)。 ...そしてサイズが10,000のリストの場合: その最後のチャートは正しいです-EclipseとGuava以外のソリューションは遅すぎて、1ピクセルのバーを取得することさえできません!高速ソリューションは、他のソリューションよりも10,000〜20,000 倍高速です。 もちろん、ここで起こっているのは、guavaとeclipseのソリューションが実際には10,000要素のリストの種類を具体化しないことです。これらは、開始と終了の周りの固定サイズのラッパーにすぎません。各要素は、反復中に必要に応じて作成されます。このテストでは実際には反復しないため、コストは延期されます。他のすべてのソリューションは、実際に完全なリストをメモリに具体化し、作成のみのベンチマークで高額を支払います。 もう少し現実的なことをして、すべての整数を繰り返して合計します。したがって、IntStream.rangeClosedバリアントの場合、ベンチマークは次のようになります。 @Benchmark …

15
JavaでのHashMapの印刷
私はHashMap: private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>(); ここで、すべての値を調べて出力したいと思います。 私はこれを書いた: for (TypeValue name : this.example.keySet()) { System.out.println(name); } 動作しないようです。 何が問題ですか? 編集:別の質問:このコレクションはゼロベースですか?つまり、キーが1つあり、値が0か1か、ということです。
129 java  collections 

10
C#で定数辞書を作成する
sからs への定数(実行時に変更されない)マッピングを作成する最も効率的な方法は何ですか?stringint 私はconst辞書を使ってみましたが、うまくいきませんでした。 適切なセマンティクスで不変のラッパーを実装することもできますが、それでも完全に正しいとは言えません。 質問した人のために、私は生成されたクラスにIDataErrorInfoを実装していて、記述子の配列にcolumnNameルックアップを行う方法を探しています。 スイッチで文字列を受け入れることを(テストではタイプミス!)気づかなかったので、これを使用します。ありがとう!

7
どのJavaコレクションを使用すればよいですか?
この質問では、C ++ 11で標準ライブラリコンテナーを効率的に選択するにはどうすればよいですか?C ++コレクションを選択するときに使用する便利なフローチャートです。 これは、どのコレクションを使用すればよいかわからない人にとっては便利なリソースだと思ったので、Javaの同様のフローチャートを見つけようとしましたが、見つけることができませんでした。 Javaでプログラミングするときに使用する適切なコレクションを選択するのに役立つリソースと「チートシート」はありますか?どのようなリスト、セット、マップの実装を使用すべきかを人々はどのように知るのでしょうか?

7
@RequestParamでリストをバインドする
私はこのようにフォームからいくつかのパラメータを送信しています: myparam[0] : 'myValue1' myparam[1] : 'myValue2' myparam[2] : 'myValue3' otherParam : 'otherValue' anotherParam : 'anotherValue' ... 次のようなパラメータを追加することで、コントローラメソッドのすべてのパラメータを取得できることを知っています。 public String controllerMethod(@RequestParam Map<String, String> params){ .... } パラメータmyParam [](他のパラメータではない)をリストまたは配列(インデックスの順序を維持するもの)にバインドしたいので、次のような構文を試しました。 public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){ .... } そして public String controllerMethod(@RequestParam(value="myParam") String[] myParams){ .... } しかし、それらのいずれもmyParamsをバインドしていません。マップに値を追加しても、paramsをバインドできません。 public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){ …

5
Pythonでセットのセットを作成するにはどうすればよいですか?
Pythonでセットのセットを作成しようとしています。どうすればいいのかわからない。 空のセットから始めますxx: xx = set([]) # Now we have some other set, for example elements = set([2,3,4]) xx.add(elements) しかし私は得る TypeError: unhashable type: 'list' または TypeError: unhashable type: 'set' Pythonでセットのセットを持つことは可能ですか? 私は大量のセットのコレクションを扱っており、重複セットを処理する必要がないようにしたい(A1 = A1のセットB、A。= Ajの場合、Anは2つのセットを「キャンセル」する)

8
コレクションを配列に変換する最も簡単な方法は?
があると仮定しCollection<Foo>ます。それをに変換するための最良の(現在のコンテキストではLoCで最も短い)方法はFoo[]何ですか?任意のよく知られたライブラリが許可されています。 UPD:;:どのような変換については(このセクションの1以上の場合休暇のコメントをあなたはそれの価値はそれのために別のスレッドを作成すると考えられる場合)Collection<Foo>にBar[]どこBarタイプの1つのパラメータでコンストラクタを持ってFooすなわちpublic Bar(Foo foo){ ... }?

5
メンバーコレクションを公開するためのReadOnlyCollectionまたはIEnumerable?
呼び出しコードがコレクションを反復するだけの場合、内部コレクションをIEnumerableではなくReadOnlyCollectionとして公開する理由はありますか? class Bar { private ICollection<Foo> foos; // Which one is to be preferred? public IEnumerable<Foo> Foos { ... } public ReadOnlyCollection<Foo> Foos { ... } } // Calling code: foreach (var f in bar.Foos) DoSomething(f); ご覧のとおり、IEnumerableはReadOnlyCollectionのインターフェイスのサブセットであり、ユーザーがコレクションを変更することはできません。したがって、IEnumberableインターフェースで十分な場合は、それを使用します。それはそれについて推論する適切な方法ですか、それとも何か不足していますか? ありがとう/ Erik


10
キー名に応じてHashMapから文字列値を取得します
HashMapさまざまなキーと値を持つを持っていますが、どのようにして1つの値を取得できますか? マップにと呼ばれるキーがありますmy_code。これには文字列が含まれている必要があります。マップを反復処理することなく、それを取得するにはどうすればよいですか? これまでのところ.. HashMap newMap = new HashMap(paramMap); String s = newMap.get("my_code").toString(); String「ABC」や「DEF」などのが表示されることを期待していますが、これは最初にそこSystem.out.println()に挿入したものですが、表示するとjava.lang.string#F0454 申し訳ありませんが、おそらくあなたが推測できるように、私はマップにあまり詳しくありません;)


15
スレッドセーフなList <T>プロパティ
私はList&lt;T&gt;間違いなくスレッドセーフに使用できるプロパティとしての実装を望んでいます。 このようなもの: private List&lt;T&gt; _list; private List&lt;T&gt; MyT { get { // return a copy of _list; } set { _list = value; } } コレクションのコピー(複製)を返す必要があるようですが、どこかでコレクションを反復処理していて、同時にコレクションが設定されている場合、例外は発生しません。 スレッドセーフなコレクションプロパティを実装する方法は?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.