Java 源码——使用HashSet(哈希集)移除字符串数组中的重复值(HashSet used to remove duplicate values from array of strings)

我们知道,set和list的区别在于前者不允许存在重复值而后者允许重复值。可以利用set的这一属性完成一个常见实用功能——移除重复值。

 

源码:

// Fig. 16.16: SetTest.java
// HashSet used to remove duplicate values from array of strings.
import java.util.List;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.Collection;

public class SetTest 
{
   public static void main(String[] args)
   {
      // create and display a List<String>
      String[] colors = {"red", "white", "blue", "green", "gray", 
         "orange", "tan", "white", "cyan", "peach", "gray", "orange"};
      List<String> list = Arrays.asList(colors);
      System.out.printf("List: %s%n", list);

      // eliminate duplicates then print the unique values
      printNonDuplicates(list);
   }  

   // create a Set from a Collection to eliminate duplicates
   private static void printNonDuplicates(Collection<String> values)
   {
      // create a HashSet 
      Set<String> set = new HashSet<>(values);   

      System.out.printf("%nNonduplicates are: ");

      for (String value : set)
         System.out.printf("%s ", value);

      System.out.println();
   } 
} // end class SetTest

运行结果:

List: [red, white, blue, green, gray, orange, tan, white, cyan, peach, gray, orange]

Nonduplicates are: tan green peach cyan red orange gray white blue 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值