集合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()));
}
}