CORE
HOME > JAVA > J2SE > CORE
2018.09.23 / 16:12

Java¿¡¼­ Ä÷º¼ÇÀÇ Áߺ¹À» Á¦°ÅÇÏ´Â ¹æ¹ý

hangawee
Ãßõ ¼ö 205

Java¿¡¼­ Ä÷º¼Ç¿¡¼­ Áߺ¹ Á¦°Å

¿ä»õ Java °³¹ß¿¡ ºüÁ®¼­ Çã¿ìÀû ÁßÀε¥ °³¹ßÀ» ÇÏ´Ù º¸¸é µ¥ÀÌÅ͸¦ Ä÷º¼Ç¿¡ ´ã¾Æ¼­ ó¸®ÇÏ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.
±×¸®°í ±× Ä÷º¼Ç¿¡ Áߺ¹µÈ µ¥ÀÌÅÍ°¡ ¹ß»ýÇÏ´Â ¹®Á¦°¡ ÀÖ¾ú´Âµ¥ ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ ¹æ¹ýÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù.
¸ÕÀú ¿¹¸¦ À§Çؼ­ ¾Æ·¡ÀÇ Ä÷º¼ÇÀ» »ç¿ëÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù.

1
2
List<Integer> intList = Arrays.asList(1,2,3,4,5,5,2,1,5);
List<String> strList = Arrays.asList("abc", "222", "123", "222", "123", "abc");

ÃÖÁ¾ °á°ú´Â ´ÙÀ½°ú °°ÀÌ ³ª¿À°Ô µË´Ï´Ù.

1
2
intList = [1, 2, 3, 4, 5]
strList = [222, 123, abc]


Step 1. HashSetÀ» »ç¿ëÇÏ¿© Áߺ¹ Á¦°ÅÇϱâ

JavaÀÇ Ä÷º¼Ç Áß Set Ä÷º¼Ç Áß ÇϳªÀΠHashSetÀ» ÅëÇؼ­ Á¦°ÅÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.

1
2
List result1 = new ArrayList(new HashSet(intList));
List result2 = new ArrayList(new HashSet(strList));

Áߺ¹µÈ Ä÷º¼ÇÀ» HashSet¿¡ ³Ö°Ô µÇ¸é Set Ä÷º¼Ç Ư¼º »ó Áߺ¹µÈ ÀÚ·á´Â Á¦°ÅµË´Ï´Ù.
ÀÌ·¸°Ô Áߺ¹µÈ °á°ú¸¦ ´Ù½Ã ArrayList·Î ³Ö°Ô µÇ¸é Áߺ¹µÈ ÀÚ·á´Â »ç¶óÁö°Ô µË´Ï´Ù.

ÇÏÁö¸¸ ÀÌ ¹æ¹ýÀº ½â ÁÁÀº ¹æ¹ýÀº ¾Æ´Ñ °Í °°½À´Ï´Ù.
±âÁ¸ Áߺ¹µÈ ÀÚ·áÇüÀ» HashSetÀ¸·Î º¯°æ ÈÄ ´Ù½Ã ArrayList·Î º¯°æÇÏ´Â °ÍÀº ºÎ´ãÀÌ µË´Ï´Ù.


Step 2. Java8ÀÇ StreamÀ» »ç¿ëÇϱâ

Java8Àº 7°ú ºñ±³ÇÏ¿© ´Ù¾çÇÑ °ÍÀÌ Ãß°¡µÇ°í º¯°æÀÌ µÇ¾ú½À´Ï´Ù.
ÀÌ Áß StreamÀÇ distinct() ¸Þ¼­µå¸¦ È°¿ëÇÏ¿© Áߺ¹À» Á¦°ÅÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù.

1
2
List result1 = intList.stream().distinct().collect(Collectors.toList());
List result2 = strList.stream().distinct().collect(Collectors.toList());

streamÀÇ distinct()¸¦ »ç¿ëÇÏ°Ô µÇ¸é Áߺ¹µÈ °ªÀ» Á¦°ÅÇÏ°Ô µË´Ï´Ù.
±×¸®°í collect()¸¦ ÅëÇØ List·Î ¹ÝȯÇÏ°Ô µÇ¸é ¾ÆÁÖ ±ò²ûÇÏ°Ô Ã³¸®ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.


°á·Ð¡¦Java8!

°³ÀÎÀûÀ¸·Î Step2 ¹æ¹ýÀ¸·Î Ä÷º¼ÇÀÇ Áߺ¹ÀڷḦ Á¦°ÅÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÏ´Â°Ô ÁÁÀº °Í °°½À´Ï´Ù.

ÀÌ·± ºñ½ÁÇÑ °í¹ÎÀ» ÇϽô ºÐµé¿¡°Ô ÁÁÀº ÀÚ·á°¡ µÇ¾úÀ¸¸é ÇÕ´Ï´Ù.
¿ä»õ ¿ÀǼҽº ¹× ȸ»ç ¾÷¹«¸¦ ÁøÇàÇÏ´À¶ó ¹Ù»ÚÁö¸¸¡¦²ÙÁØÈ÷ Æ÷½ºÆÃÀ» ´Ù½Ã Çغ¸µµ·Ï ÇÏ°Ú½À´Ï´Ù!

Ãß¿îµ¥ °¨±â Á¶½ÉÇϽðí, ¹æ¹®ÇØÁּż­ °¨»çÇÕ´Ï´Ù!