Java sixteen集合类Set

本文深入介绍了Java中Set集合的基本概念及使用方法,包括Set接口及其常用实现类HashSet和TreeSet的特点与应用场景。通过实例展示了如何利用Set集合去除重复元素,并探讨了HashSet不保证迭代顺序的特点。

1、Set集合

Set集合中的对象不按特定方式排序,只是简单的将对象加入集合中。Set集合不能包含重复对象。

1、1Set接口

Set集合由Set接口和Set接口的实现类组成。

 

MethodReturnDescrible
add(Object obj)boolean如果此Set集合中不存在此obj则将其添加到集合中
addAll(Colection coll)boolean将coll添加到集合尾部
remove(Object obj)boolean移除obj
retainAll(Collection coll)boolean只保存Set集合中包含在指定Collection集合中的内容
removeAll(Collection c)boolean在Set集合中移除指定Collection中的元素
clear()void清除Set
iterator()Iterator返回此Set中的元素上进行迭代的迭代器
size()intSet中元素数
isEmpty()boolean空返回true

Set接口的实现类常用的:

Set<String> collSet = new HashSet<String>();
Set<String> colSet = new TreeSet<String>();

example:

addAll()/iterator()

package sixteen;

import java.util.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.ArrayList;

import java.util.Set;

public class setaddAll {
 public static void main(String[] args){
  List list = new ArrayList<String>();
  list.add("a");
  list.add("b");
  list.add("a");
  //java.util.HashSet.HashSet<String>()
  Set set = new HashSet<String>();
  //Set集合中不允许有重复字符,可以用此方法删去重复字符
  set.addAll(list);
  Iterator<String> it = set.iterator();
  System.out.println("Set is :");
  while(it.hasNext()){
   System.out.println(it.next());
  }
 }
}
/*Set is :
a
b*/

 HashSet

不保证Set的迭代顺序,不保证顺序不变。

example:

package sixteen;

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

public class People {
 private String name;
 private long id;
 public People(String name,long id){
  this.name = name;
  this.id = id;
 }
 public long getId(){
  return id;
 }
 public void setId(){
  this.id = id;
 }
 public String getName(){
  return name;
 }
 public void setName(){
  this.name = name;
 }

 public static void main(String[] args){
  Set<People> hashSet = new HashSet<People>();
  hashSet.add(new People("John",123));
  hashSet.add(new People("Sam",456));
  Iterator<People> it = hashSet.iterator();
  System.out.println("Set is :");
  while(it.hasNext()){
   People person = it.next();
   System.out.println(person.getName() + person.getId());
  }
 
 
}
 }
/*
 * Set is :
John123 
Sam456
*/

 

 

转载于:https://my.oschina.net/doudoulee/blog/634680

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值