java.util.Collection Set API

2021-09-09 10:40:07 浏览数 (2)

简介

java.util.Collection 是一个集合框架的父接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。不能存储相同的元素,同时因为其是一个抽象的接口:所以不能直接实例化一个set对象。(Set s = new Set() )错误。该接口主要继承于Collection接口,所以具有Collection的一些常见的方法。

代码语言:javascript复制
 Set<String> testSet = new HashSet<>();
 Set<Integer> test = new TreeSet<>();

add

描述:添加元素到Collection集合中。

代码语言:javascript复制
boolean add(E e)

描述:将指定c中的所有元素都添加到此Collection集合中。

代码语言:javascript复制
boolean addAll(Collection<? extends E> c)

clear

描述:移除此collection集合中的所有元素

代码语言:javascript复制
void clear()

contains

描述:检查Collection集合中是否包含o对象,如果包含则返回true,否则返回false。

代码语言:javascript复制
boolean contains(Object o)

描述:检查Collection集合中是否包含c的全部对象,全部包含则返回true,否则返回false。

代码语言:javascript复制
boolean containsAll(Collection<?> c)

isEmpty

描述:检查Collection集合是否包含有元素,如果没有包含元素,则返回true,否则返回false。

代码语言:javascript复制
boolean isEmpty()

iterator  

描述:返回在此collection集合的元素上进行迭代的迭代器。注意:迭代过程中不能用集合里的添加、删除等方法修改集合,不然会报错。

代码语言:javascript复制
Iterator<E> iterator()

remove

描述:从collection集合中删除指定的元素,如果集合中有这个元素,并且删除成功,那么就返回true,否则返回false。

代码语言:javascript复制
boolean remove(Object o)

描述:从集合中删除c集合中所有的元素。

代码语言:javascript复制
boolean removeAll(Collection<?> c)

size     

描述:返回集合中元素个数。

代码语言:javascript复制
int size()

equals

描述:比较此collection集合与指定对象是否相等,是比较的是里面元素是否相等,而不是比较地址是否相等。

代码语言:javascript复制
boolean equals(Object o)

retainAll

描述:集合中仅保留c集合中的所有元素

代码语言:javascript复制
boolean retainAll(Collection<?> c)

toArray

描述:返回包含此collection集合中所有元素的数组

代码语言:javascript复制
Object[] toArray()

工具方法

元素去重

代码语言:javascript复制
public class SetRemo {

	public static void main(String[] args) {
		HashSet hs=new HashSet<>();
		hs.add(new Student("a","12"));
		hs.add(new Student("b", "12"));
		hs.add(new Student("c", "13"));
		hs.add(new Student("c","12"));
		hs.add(new Student("a","12"));
		
		
		for (Object obj : hs) {
			if(obj instanceof Student) {
				Student stu=(Student)obj;
				System.out.println(stu.getName()   stu.getAge());
			}
		}
		
	}
}

@Getter
@Setter
class Student{
	private String name;
	private String age;

	public Student(String name, String age) {
		this.name = name;
		this.age = age;
	}
	public Student() {}
	
	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return this.getName().hashCode() this.getAge().hashCode();
	}
	@Override
	public boolean equals(Object obj) {
			if(obj instanceof Student) {
				Student s=(Student)obj;
				return this.getName().equals(s.getName()) && this.getAge().equals(s.getAge());
			}
		return false;
	}
}

备注: HashSet去重时自动调用hashCode()方法,这个方法会返回一个哈希值,只有当这个哈希值相等时才会调用equals()方法进行去重。

0 人点赞