2016-10-04 5 views
2

誰かが私のデータ型/構造体をjavaで指定できますか? 1)固定サイズなし 2)データを自動的にソートしません。データは、到着した順に格納する必要があります。 3)ユニークなエントリのみを格納する必要があります。 4)その要素にアクセスできるか、少なくとも最初の要素が必要です。Javaは対リストを設定します

リンクでは一意のエントリを維持できません。 私はSetsを使って作業を試みましたが、自動的にデータの順序を変更してしまいました。 私は今LinkedHashSetで自分のやり方を工おうとしていますが、比較のために同じ要素の最初の要素にアクセスする正確な方法を見つけることができません。

お願いします。ありがとう!

+3

リンクされたハッシュセット – JavaHopper

+0

最初の要素は 'set.iterator()。next()'です。 –

答えて

4

独自の構造体を作成したくない場合はLinkedHashSetを使用できます。取得要素はちょっとトリッキーなことがあり、これを試してみてください。

Integer lastInteger = set.stream().skip(set.size()-1).findFirst().get();

これですよ、あなたが別の要素が必要な場合は、別の数をスキップする必要があり、最後の要素を取得します。これは唯一の方法です。イテレータを取得して自分自身を反復することができます。hashCodeequalsをオーバーライドすることを忘れないでください。

+0

OPは、最初の要素だけを要求します。これは簡単ですが、単に 'set.iterator()。next()'です。 –

2

LinkedHashSetは、お客様の要件に適したデータ構造です。

あなたがそうのような最初の要素にアクセスすることができます。他の要素にアクセスするために、@Whatzsからの回答を参照してください

Set<String> set = new LinkedHashSet<>(); 
set.add("a"); 
set.add("b"); // And so on 

// Retrieve first element 
// Will throw NoSuchElementException if set is empty 
String firstElement = set.iterator().next(); 

// Retrieve and remove first element 
Iterator<String> i = set.iterator(); 
String otherFirstElement = i.next(); 
i.remove(); 

+0

ありがとう!出来た – user3868051

0

私はあなたの質問を正しく理解していれば、セットとArrayListの一種であるArraySetのプロパティを組み合わせたデータ構造を探しています。

私はコアJavaに何も見つかりませんでしたが、Android JDKのようなデータ構造があるようです。

https://developer.android.com/reference/android/util/ArraySet.html https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util/ArraySet.java

一つの解決策は、Androidの実装に基づいて独自に構築することがあります。

関連する問題