Sachverhalt: A. Die Staatsanwaltschaft Zürich-Limmat (im Folgenden: Staatsanwaltschaft) führt gegen X._ eine Strafuntersuchung wegen des Verdachts der mehrfachen Schändung. Sie wirft ihm vor, sich als Anästhesiepfleger im Spital an Patientinnen, die sich nach einer Operation im Aufwachraum aufhielten, sexuell vergangen zu haben. Am 14. September 2011 nahm ihn die Polizei fest. Mit Verfügung vom 16. September 2011 versetzte ihn das Zwangsmassnahmengericht des Bezirks Zürich bis zum 31. Oktober 2011 in Untersuchungshaft. Am 1. November 2011 verlängerte das Zwangsmassnahmengericht die Haft bis zum 31. Januar 2012. Die von X._ dagegen erhobene Beschwerde wies das Obergericht des Kantons Zürich (III. Strafkammer) am 29. November 2011 ab. Es bejahte den dringenden Tatverdacht und Kollusionsgefahr. Ob überdies Fluchtgefahr gegeben sei, liess es offen. Ersatzmassnahmen erachtete es als ungenügend. Die Haftdauer beurteilte es als verhältnismässig. B. X._ führt Beschwerde in Strafsachen mit dem Antrag, der Beschluss des Obergerichts sei aufzuheben. Er sei, eventuell unter Anordnung von Ersatzmassnamen, sofort aus der Untersuchungshaft zu entlassen. Subeventualiter sei der Beschluss des Obergerichts aufzuheben und die Sache zur Neubeurteilung an dieses zurückzuweisen. C. Das Obergericht hat auf Gegenbemerkungen verzichtet. Die Staatsanwaltschaft hat sich vernehmen lassen mit dem Antrag, die Beschwerde abzuweisen. Eventualiter seien die Akten an das Obergericht zurückzuweisen und dieses anzuweisen, sich einerseits auch zur Frage der Fluchtgefahr zu äussern und anderseits dem Verteidiger das rechtliche Gehör im Sinne einer Frist zur Stellungnahme einzuräumen; diesfalls sei die Haft bis zum Entscheid des Obergerichts aufrecht zu erhalten. X._ hat zur Vernehmlassung Stellung genommen. Er hält an seinen Anträgen fest. 