質問

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 );
}
.

}

あなたはできる:

  1. HashSet<String> Studentsのすべての名前を含むstud2
  2. 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 に追加
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top