オブジェクトのJavaリスト|
-
11-12-2019 - |
質問
List<Student> stud1 = new ArrayList<Student>();
を持っています
List<Student> stud2 = new ArrayList<Student>();
とStudent
クラスは、名、アドレスのようなメンバーを持っています。
私がしなければならないことは、私はStud1から学生をリストしなければなりません( stud1の学生名が stud2の学生名)。
これを達成する方法?
私は知りたいのですが、この問題を解決するための listutil のような listutil のような Javaライブラリーがありますか?
解決
コレクション内の要素を比較する方法は多くの方法があります。あなたの学生クラス。
詳細: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/comparable.html
他のヒント
それらの両方を反復して、結果として得られたリストを追加し続ける 最適化したい場合は
マップを作成する
Map<String, List<Student>> dictionaryMapOfStudents;
.
からHashMap
の実装を選択し、名前が何度も一致する生徒のみを探します。
例えばです
A Asdahd, Aasldfalf, Aero
B Baksd, Bajsr, Biro
.
だから今検索全リスト、絞り込まれた検索
この例はあなたを助けるかもしれません
import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class Repeated {
public static void main( String [] args ) {
Collection listOne = new ArrayList(Arrays.asList("milan","dingo", "elpha", "hafil", "meat", "iga", "neeta.peeta"));
Collection listTwo = new ArrayList(Arrays.asList("hafil", "iga", "binga", "mike", "dingo"));
listOne.retainAll( listTwo );
System.out.println( listOne );
}
.
}
あなたはできる:
-
HashSet<String>
のStudent
sのすべての名前を含むstud2
-
Student
の各stud1
の場合は、その名前がセット内にあるかどうかを確認し、それがある場合はリストにそれを返すように追加します。
ルックアップ名のマッチングにHashSetを使用することができます:
class Student {
private String name;
private String address;
public Student(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
public class Program {
public static void main(String[] args) {
List<Student> s1 = new ArrayList<Student>();
List<Student> s2 = new ArrayList<Student>();
// generate data
for (int i = 0; i < 5; i++) {
Student s = new Student("Student" + i, "");
s1.add(s);
}
for (int i = 0; i < 10; i++) {
Student s = new Student("Student" + i, "");
s2.add(s);
}
// create a lookup HashSet
Set<String> nameSet = new HashSet<String>();
for (Student s : s2) {
nameSet.add(s.getName());
}
List<Student> result = new ArrayList<Student>();
// perform lookup
for (Student s : s1) {
if (nameSet.contains(s.getName())) {
// add the matching student to the result list
result.add(s);
}
}
}
}
. あなたのためのいくつかのアルゴリズム:
- Stud3の配列リストを作成する
- LOOPからINT i= 0からi=(STOD1.SIZE() - 1)
- LOOPからint j= 0からj=(stud2.size() - 1)
- stud1.get(i).getName()がstud2.get(j).getName()に等しいかどうかを確認してください。
- stud1.get(i)がstud3にあるかどうかを確認してください。
- 続行を続けます
- それ以外の
- stud1.get(i)をstud3 に追加
- stud1.get(i)がstud3にあるかどうかを確認してください。
- stud1.get(i).getName()がstud2.get(j).getName()に等しいかどうかを確認してください。
- LOOPからint j= 0からj=(stud2.size() - 1)
所属していません StackOverflow