๐ป Programming/Javascript
[Java] stream์ ์ด์ฉํ์ฌ String์์ distinct ํ ์บ๋ฆญํฐ ์ถ์ถํ๊ธฐ
๋ฌธ์ฅ ๋ด์์ ์ฌ์ฉ๋ distinct ๋ฌธ์ ๊ฐ์ ๊ตฌํ๊ธฐ
ํ ๋ฌธ์ฅ ์์์ ์ฌ์ฉ๋ distinct ๋ฌธ์์ ๊ฐ์๋ฅผ ๊ตฌํด์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํ ์ ์์๊น์?
stream์ด ๋์ค๊ธฐ ์ ์ด์๋ค๋ฉด ๊ทธ์ String์ ์บ๋ฆญํฐ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ loop๋ฅผ ๋๋ ค set์ ๋ฃ์ ๋ค set์ ์ฌ์ด์ฆ๋ฅผ ๊ตฌํ๋ฉด ๋๊ฒ ์ฃ .
์๋์ฒ๋ผ ๋ง์ด์ฃ .
String sentence = "Computer users take it for granted that their systems can do more than one thing at a time.";
Set<Character> s = new HashSet<>();
for (char c : sentence.toCharArray()) {
s.add(c);
}
System.out.println(s.size());
ํ์ง๋ง stream ์ ์ด์ฉํ๋ฉด ํ์ค๋ก ํด๊ฒฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
Stream์ ์ด์ฉํ distinct ๋ฌธ์ ๊ฐ์ ๊ตฌํ๊ธฐ
stream์๋ distinct() ๋ฉ์๋๊ฐ ์์ผ๋ฉฐ ์ด๋ ํด๋น ์คํธ๋ฆผ๋ด์์ distinctํ ๊ฒ๋ค๋ง ์ถ์ถํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ count()๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๊ทธ ๊ฐ์๋ฅผ ์ ์ ์์ต๋๋ค.
๊ทธ๋์ ์์์ set๊ณผ for-loop๋ฅผ ์ฌ์ฉํ ๋ถ๋ถ์ stream์ ์ด์ฉํ์ฌ ํ์ค๋ก ์ค์ด๋ฉด ์๋์ ๊ฐ์ด ๋ฐ๊ฟ ์ ์์ต๋๋ค.
String sentence = "Computer users take it for granted that their systems can do more than one thing at a time.";
long distinctCharsCount = sentence.chars().distinct().count();
System.out.println(distinctCharsCount);
ํจ์ฌ ๊ฐ๋จํ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.