Java基础--集合Set-HashSet

集合Set

import java.util.Collection;  
import java.util.HashSet;  
import java.util.LinkedHashSet;  
import java.util.Set;  
import java.util.TreeSet;  
  
public class ArrayDemo {  
  
    public static void main(String[] args) {  
          
           
        /** 
         * 数组:缺点:长度固定,不能动态添加元素和删除元素 
         * 它只能通过索引修改现有元素的值。 
         * .length 
         *  
         * Arrays 
         *  
         *  
         * Set -----集合就是为了弥补数组的静态性,动态扩展一个形式。 
         *  
         * JDK1.8---集合---stream(统计学:平均数,个数,过滤,) 和lam表达对集合的操作的封装 
         *  
         *  
         */  
        //静态定义  
        Integer[] nums = {10,2,3,4,5,6,7,8,9};  
        //Integer[] nums2 = new Integer[]{1,2,3,4,5,6,7,8,9};  
        Integer[] nums3= new Integer[10];//合理的内存大小的开辟  
//      Arrays.sort(nums);//从小到大--某种算法--  
//      Arrays.sort(nums, new ObjectComparator(true));  
//      Arrays.fill(nums3, 2);//快速初始化默认值  
//      for (Integer integer : nums3) {  
//          System.out.print(integer+"\t");  
//      }  
          
          
//      在开始过程中---用的最多是List---ArrayList  
//      图----Map---HashMap  
          
        //接口是一个规范---一定一个约束子类的命名规则和行为  
        // 增删插改,长度,索引 循环 排序 去重,取交集,   
          
        //java中的多态---多态定义-只能调用接口中被覆盖的方法和属性.  
          
        /** 
         * Collection顶级接口中: 
         * Collection接口是List和Set和Queue接口的父接口,该接口即可以操作Set集合也可以用于操作List和Queue集合,其中通用的方法如下: 
            boolean add(Object o) :为集合添加元素,如果被添加到集合中改变集合的长度,添加成功返回true; 
            boolean addAll(Collection c) 该方法把集合c里所有的元素添加到指定的集合里。 
            void clear():清空集合,长度变0. 
            boolean contains(Object c):判断元素是否在集合中。 
            boolean containsAll(Collection c):判断某集合是否包含另外一个集合所有的元素,如果是返回:true 
            boolean isEmpty();判断集合是否为空,如果size=0;返回true否则false. 
            Iterator iterator()返回一个迭代对象,用于遍历集合里的元素。 
            boolean remove(Object c);根据某个元素从集合中删除。改变长度 
            boolean removeAll(Collection c);删除一个集合中在另外一个集合中的所有元素。如果删除有一个或者多个返回true;否则false; 
            boolean retainAll(Collection c);从集合中删除集合c里不包含的元素, 
            int  size();获取集合的长度 
            object[] toArray() 该方法把一个集合快速的转换成数组。 
         *  
         *  
         * Set子元素有一个特征:不允许出现相同的元素,里面进行过滤,每次执行是无序进行存储. 
         * 里面叫hashcode-- 
         *  
          
         *  
         *  
         */  
          
        Set<Integer> ages = new HashSet<>();  
        ages.add(20);  
        ages.add(30);  
        ages.add(10);  
        ages.add(20);  
        ages.add(30);  
        for (int i = 0; i <=100000; i++) {  
            ages.add(i);  
        }  
          
          
          
        //循环获取元素的三种方式  
        for (Integer age : ages) {  
            System.out.println(age);  
        }  
          
    }  
}  


集合的基本操作

Student类

package test.SetTest;

public class Student {
	private String name;
	private Integer age;
	
	public Student(){
		super();
	}
	
	public Student(String name,Integer age){
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((age == null) ? 0 : age.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (age == null) {
			if (other.age != null)
				return false;
		} else if (!age.equals(other.age))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
}

操作集合的方法

package test.SetTest;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class ArrayDemo {
	public static void main(String[] args) {
		HashSet<Student> students = new HashSet<>();
		
		Student aa = new Student("aa",12);
		Student bb = new Student("bb",15);
		Student cc = new Student("cc",18);
		Student xx = new Student("xx",15);
		Student yy = new Student("yy",18);
		Student zz = new Student("yy",18);  //重复数据,,会过滤掉
		
		students.add(aa);
		students.add(bb);
		students.add(cc);
//		students.remove(aa);
		
		HashSet<Student> students2 = new HashSet<>();
		
		students2.add(xx);
		students2.add(yy);
		students2.add(zz);
		
		students.addAll(students2);  //将另外一次集合塞入集合中
//		students.removeAll(students2); //将集合从另外集合删除
		
//		System.out.println("清空之前===="+students.size());
//		students.clear();
//		System.out.println("清空之后===="+students.size());		
		

//		//转数组
//		Object[] students3 = students.toArray();
//		for (int i = 0; i < students3.length; i++) {
//			Student student = (Student) students3[i];
//			System.out.println(student.getName() + "--" + student.getAge());
//		}

		
		//四种循环集合方法
//		for (Student student : students) {
//			System.out.println(student.getName()+"========"+student.getAge());
//			
//		}
		
//		Iterator<Student> iterator = students.iterator();
//		while (iterator.hasNext()) {
//			Student student =  iterator.next();
//			System.out.println(student.getName() + "=======" + student.getAge());
//		}
		
//		for (Iterator iterator = students.iterator(); iterator.hasNext();) {
//			Student student = (Student) iterator.next();
//			System.out.println(student.getName()+"====="+student.getAge());
//		}
		
		//JDK1.8  lambda表达的集合循环方式
		students.forEach(student->System.out.println(student.getName()+"-=-=-"+student.getAge()));

	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值