Javaには、コンパイラを使用してリスト内の特定のオブジェクトをその変数の1つで見つけるC++標準ライブラリのリストに似たものがありますか?Javaには、変数値でオブジェクトを見つけるためのC++標準ライブラリリストコンパレータに類似したものがありますか?
たとえば、変数比較をチェックして特定のオブジェクトを探すArrayListをループする代わりに、特定のインスタンスを見つけるためにコンパレータオブジェクトを使用する方法はありますか?
(注:。。私は関与HashMapを持つことなく、リストの機能が必要なことは、2つの別々のリストを作成してハッシュマップを使用しない)このような
何かを、しかしためJavaの:
#include <algorithm>
using namespace std;
class Cperson
{
string lastname, firstname, address, city;
int zipcode;
char state[3];
// this works for the last name
friend bool operator==(const Cperson& left, const Cperson& right);
friend bool firstEqualTo(const Cperson& left, const Cperson& right);
};
bool operator==(const Cperson& left, const Cperson& right)
{
return left.lastname == right.lastname;
}
bool firstEqualTo(const Cperson& left, const Cperson& right)
{
return left.firstname == right.firstname;
}
今、私たちは他のフィールドを無視して、ファーストネームフィールド上の私たちのpersonlistを検索することができます。
vector<Cperson> personlist;
// fill personlist somehow
Cperson searchFor; // should contain the firstname we want to find
vector<Cperson>::iterator fperson;
fperson= std::find(personlist.begin(),
personlist.end(),
searchFor,
firstEqualTo);
またはこれ:http://stackoverflow.com/questions/122105/java-what-is-the-best-way-to-filter-a-collection – duffymo
特に繰り返しを実行しないでくださいか? – arootbeer
はい、高レベルの反復は、ほとんどすべてのインスタンスであらかじめプログラムされた低レベル検索よりも遅いです。私はちょうどJavaがこれに使用できる何らかのコンパレータを持っていないとは信じられません。つまり、並べ替えのためのコンパレータはありますが、検索のためのコンパレータはありません。 – Lokiare