2012-01-08 18 views
2

私はC++からjavaに行きたいと思っていますし、いくつかの困難を抱えています。 C++では、特定のクラスインスタンス(名前、bdayなどを含む従業員クラスのリストなど)のリストを作成できます。しかし、Javaでは、私は同じ機能を理解するのに苦労しています。 C++ではポインタを使用しますが、JavaではArrayListを使用することが推奨されています。しかし、配列リストを作成し、それにクラスインスタンスを渡すことはできますが、それらのクラスインスタンスに再度アクセスすることはできません。 私はこの時点で正しい方向を指していると思っているだけなので、コード例はありません。したがって、どんな提案も高く評価されます。それは、C++で呼び出すことと同じように、それは特定のクラスのインスタンスのArrayListを作成できますか?

ArrayList<MyObject> list = new ArrayList<MyObject>(); 

のようになりますので、

答えて

3

あなたはジェネリックを使用していることを行うことができます。

List<Employee> employees = new ArrayList<Employee>(); 
employees.add(new Employee()); 
Employee employee = employees.get(0); 

するインタフェースであるArrayList<E>List<E>のドキュメントを、見てみましょう。

+0

情報をありがとう、私はドキュメントを何度も注いだが、私は.get()を見たことがなかった。しかし、それはそれだった、それは私があなたに感謝していなかったものでした。 –

0

あなたがリストからアクセス任意のオブジェクトがすでに自動的に手動キャストを回避するMyObjectににキャストされたテンプレートでこの道をArrayListのを使用することができますあなたはあなたの場合に行う必要があります。次のように

0

あなたが総称化リストを使用することができます。

List<Employee> employees = new ArrayList<Employee>(); 
employees.add(new Employee()); 

ジェネリック医薬品は、すべてについて、時間型の安全性をコンパイルしています。コンパイラはそのリストにEmployeeというインスタンス以外のものを追加させません。

あなたはリストをループ次のようにすることができます:

for(Employee employee : employees) { 
    // use employee 
} 

をしかし、あなたは反復しながら、リスト自体を変更したい場合は、Iteratorを使用する必要があります。 Javaで

Iterator<Employee> it = employees.iterator(); 
while(it.hasNext()) { 
    Employee emp = it.next(); 
    //or it.remove(); to remove the element from the list 
} 

Listのは、彼らがリストに追加された要素の順序を維持します。

1

他の回答が指摘しているように、ジェネリックスが最良のソリューションを提供します。

しかし、明示的な型キャストを使用すると、従来の方法で問題を解決することもできます。例えば

List employees = new ArrayList(); 
employees.add(new Employee()); 
... 
Employee employee = (Employee) employee.get(0); 

これは、Java 1.5以前のこの問題をJavaで解決しなければならない方法です。ところで


、Javaコンパイラによって生成されたコードは、コードのBinyamin Sharetのバージョンのように...ジェネリック医薬品を使用しても、型キャスト指示が含まれるであろう。

0

Javaでは、ArrayListを使用する必要はありません。あなたのサイズがわかっていて、少しのパフォーマンスが必要な場合は、java配列を使用することができます。

C++のポインタに関しては、javaでは(int、floatなどのプリミティブを除く)すべてがC++のポインタと同様の参照です。

私は、例として、配列を使用し言う:

ジャワ:

Employee emp = new Employee(); 
Employee[] empArray = new Employee[10]; 
// This is similar to C++ STL 
List<Employee> empList = new ArrayList<Employee>(); 

// Array just points to the object as pointer in C++ 
empArray[0] = emp; 

empList.add(emp); 

C++:詳細について

Employee emp = new Employee(); 
Employee * empArray = new Employee[10]; 
list<Employee> L; 

Java Tutorials Java Arrays To create an analogy b/w Java and C++

関連する問題