2016-10-18 13 views
0

同じ値を持つオブジェクトを配列に配置しようとしています。例えば、このコードは、1つの手段バス路線1、及び2つの手段バス路線2の同じ値を持つオブジェクトを配列に配置するには

Student a = new Student("Abigail", 1, 5); 
     Student b = new Student("Benny", 1, 6); 
     Student c = new Student("Charles", 1, 10); 
     Student d = new Student("Denise", 2, 12); 
     Student e = new Student("Eleanor", 2, 9); 
     Student f = new Student("Fred", 2, 5); 

Iは、同じ経路を持つ人々は、方法を使用して、アレイ内のようにしたい、代わりに手動でオブジェクトを接続します内側の配列。それを行う方法はありますか?

+0

知っていますか? – ChiefTwoPencils

+0

ルートは2つしかなく、すべての生徒は上記のとおりです –

答えて

0

あなたはMultimapまたはMap<Integer, List<Student>>を保つことができる:

private final Map<Integer, List<Student>> buses = new HashMap<>(); 

public void addStudent(Student s) { 
    buses.computeIfAbsent(s.getRoute(), k -> new ArrayList<>()).add(s); 
} 

これはもちろん、あなたがコンストラクタに提供数えStudent#getRouteリターンを前提としています。

0

また、これは動作するはずです:あなたが持っている正確にどのように多くのルートや学生

import java.util.Arrays; 

public class BusRoute { 
    public static void main(String[] args) { 
     Student a = new Student("Abigail", 1, 5); 
     Student b = new Student("Benny", 1, 6); 
     Student c = new Student("Charles", 1, 10); 
     Student d = new Student("Denise", 2, 12); 
     Student e = new Student("Eleanor", 2, 9); 
     Student f = new Student("Fred", 2, 5); 

     Student[] students = Student.getBusroute(2, a, b, c, d, e, f); 
     System.out.print(students); 
    } 

    static public class Student { 
     String name; 
     int busRoute; 
     int age; 
     Student(String name, int busRoute, int age) { 
      this.name = name; 
      this.busRoute = busRoute; 
      this.age = age; 
     } 

     public int getBusRoute() { 
      return busRoute; 
     } 

     static public Student[] getBusroute(int busRoute, Student ...students) { 
      return (Student[])Arrays.stream(students).filter(student -> student.getBusRoute() == busRoute).toArray(); 
     } 
    } 
} 
関連する問題