The Stream API is designed to work and iterate through one and only one collection and no more. 
If you want to achieve such iteration called "zipping", as mentioned in the another answer, you have to iterate the indices. Since Set is not ordered, you have to use List instead and know the order is not predictable.
However, the usage of Stream API should be fine here:
Set<MyObject> set = ...                                             // MyObject with getId method
List<MyObject> listFromSet = new ArrayList<>(set);
List<MyObject> list = ...                                           // existing list
IntStream.range(0, Math.min(list.size(), listFromSet.size()))
        .mapToObj(index -> new AbstractMap.SimpleEntry<>(
            listFromSet.get(index).getId(),                         // key
            list.get(index))                                        // value
        )
        .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); // to Map
Few notes:
- To know the highest number you can iterate through, you need ti find a lower from the sizes of the iterables: Math.min(list.size(), listFromSet.size()).
- map(Collector.toMap(...))doesn't convert a- Streamto- Mapbut is not a valid construct, moreover the method- mapis not a terminal operation. Use- .collect(Collectors.toMap(...))instead which is.
- Not all the keys from setmight be used, not all the values fromlistmight be used, there is no guaranteed order of the keys and the matching key-value will be random.
- If I were to implement this, I'd definetly go for the simple for-loopiteration over the Streams.