Em algumas situações, me vi obrigado a converter uma collection List em um Set ou um Set em List em uma classe Apex. Creio que você também! É claro que, por serem estruturas diferentes, a quantidade de registros de um List (que permite itens repetidos) pode ser maior que de um Set (que não permite repetidos). Mas vamos ao código.
Inicialmente a conversão de List para Set:
List<Integer> listDeInteiros = new List<Integer> {1, 2, 3, 3};
Set<Integer> setDeInteiros = new Set<Integer>(listDeInteiros);
system.assertEquals(4, listDeInteiros.size());
system.assertEquals(3, setDeInteiros.size());
Agora a conversão de Set para List:
Set<Integer> setDeInteiros = new Set<Integer> {1, 2, 3, 3};
Set<Integer> listDeInteiros = new Set<Integer>(setDeInteiros);
system.assertEquals(3, setDeInteiros.size());
system.assertEquals(3, listDeInteiros.size());
É possível também, caso já possua um Set em uso, acrescentar toda a List ao Set:
List<Integer> listDeInteiros = new List<Integer>{1, 2, 3};
Set<Integer> setDeInteiros = new Set<Integer> {0};
setDeInteiros.addAll(listDeInteiros);
system.assertEquals(4, setDeInteiros.size());
E o contrário... Set ao List:
Set<Integer> setDeInteiros = new Set<Integer>{1, 2, 3};
List<Integer> listDeInteiros = new List<Integer> {0};
listDeInteiros.addAll(setDeInteiros);
system.assertEquals(4, listDeInteiros.size());