代码之家  ›  专栏  ›  技术社区  ›  Alberto Zaccagni

你如何将每个收藏的物品与另一个收藏的物品相关联?

  •  1
  • Alberto Zaccagni  · 技术社区  · 17 年前

    Collection<Room> roomsFromA = getRoomsFromA();
    Collection<Room> roomsFromB = getRoomsFromB();
    for(Room roomA : roomsFromA){
        for(Room roomB : roomsFromB){
            //add roomA and roomB to something, this is not important for what I need
            //the important part is how you handle the part before
            //especially if Collection objects number grows beyond two
        }
    }
    

    编辑2:我会尽量解释得更好,很抱歉问题不清楚。 用户要求一间双人房和一间单人房。 酒店有3间双人房和4间单人房可供选择。

    8 回复  |  直到 17 年前
        1
  •  1
  •   willcodejavaforfood    17 年前
        2
  •  0
  •   AgileJon    17 年前

    这些收藏品排得整整齐齐吗?

    HashMap map = new HashMap();
    for (int i=0; i<c1.Size(); i++) {
       map.put(c1[i], c2[i]);
    }
    
        3
  •  0
  •   José Leal    17 年前

    private static class Pair<K, T> {
        private K one;
        private T two;
    
        public Pair(K one, T two) {
            this.one = one;
            this.two = two;
        }
    
        /**
         * @return the one
         */
        public K getOne() {
            return one;
        }
    
        /**
         * @return the two
         */
        public T getTwo() {
            return two;
        }
    } 
    

    并与他们一起创建一个列表。

        4
  •  0
  •   Steve B.    17 年前

    class Room {
       public Collection<Room> getRoomsFromB { ... 
    }
    

    //收藏室

    for (Room a: rooms)
    { 
       for(Room b a.getRoomsFromB){ ...
    

        5
  •  0
  •   Alex Feinman    17 年前

        6
  •  0
  •   bruno conde    17 年前

    • 中的每个元素 collection

    1. 对两个集合进行排序(在同一个集合中
    2. 用一个循环迭代两个集合,构建一个关系对象并将其添加到一个新的集合中。

    public static class Room {
        private int number;
        private String name;
    
        public Room(int number, String name) {
            super();
            this.number = number;
            this.name = name;
        }
    
        public int getNumber() {
            return number;
        }
    
        public String getName() {
            return name;
        }
    }
    
    public static class RoomRelation {
        private Room a;
        private Room b;
    
        public RoomRelation(Room a, Room b) {
            super();
            this.a = a;
            this.b = b;
        }
    
        public Room getA() {
            return a;
        }
    
        public Room getB() {
            return b;
        }
    
        @Override
        public String toString() {
            return a.getName() + "(" + a.getNumber() + ") " + b.getName() + "(" + b.getNumber() + ")";
        }
    }
    
    public static void main(String[] args) {
    
        List<Room> roomsFromA = new ArrayList<Room>();
        List<Room> roomsFromB = new ArrayList<Room>();
    
        roomsFromA.add(new Room(1,"Room A"));
        roomsFromA.add(new Room(2,"Room A"));
    
        roomsFromB.add(new Room(1,"Room B"));
        roomsFromB.add(new Room(2,"Room B"));
    
        Comparator<Room> c = new Comparator<Room>() {
            @Override
            public int compare(Room o1, Room o2) {
                return o1.getNumber() - o2.getNumber();
            } };
    
        Collections.sort(roomsFromA, c);
        Collections.sort(roomsFromB, c);
    
        List<RoomRelation> relations = new ArrayList<RoomRelation>();
    
        for (int i = 0; i < roomsFromA.size(); i++) {
            relations.add(new RoomRelation(roomsFromA.get(i), roomsFromB.get(i)));
        }
    
        for (RoomRelation roomRelation : relations) {
            System.out.println(roomRelation);
        }
    }
    
        7
  •  0
  •   ewh105    17 年前

    Collection<Room> roomsFromA = getRoomsFromA();
    Collection<Room> roomsFromB = getRoomsFromB();
    
    Room[][] combinations = new Room[roomsFromA .size()][roomsFromB .size()];
    
    int a = 0;
    int b = 0;
    
    for(Room roomA : roomsFromA){
    
       for(Room roomB : roomsFromB){
          combinations [a][b] = [roomA][roomB]; //Build up array
          b++; 
       }
       a++;
    }
    
    return combinations;