集合的有序和无序
所有集合的基类是Collection,而他的下面有有序集合List和无序集合Set。
子类继承父类的规范
从子类对象来说,我们是默认继承Object的。在Object里面提供了这些规定,比如说tosString。所有子类都有这个规范,而且这个方法就是规定返回这个对象的字符串的。
集合通过迭代接口或抽象类来制定规范
制定规范通常用接口或抽象类时,不同的集合要实现自己的迭代接口。要在List的类里写一个方法,让这个集合规范的接口的子类返回这个迭代接口。而如果每一个人写的数组或链表的数据结构只有他自己最清楚,他知道怎么迭代。我们只需要在迭代的时候定义好接口,让他返回这个接口。
import java.util.HashSet;
import java.util.Objects;
public class Student extends Object {
public Student(int id, String name, char sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
private int id;
private String name;
private char sex;
public int hasCode (){
return new Integer(id).hashCode()+
name.hashCode()+
new Character(sex).hashCode();
}
// public boolean equals(Object obj){
// if(obj instanceof Student){
// student s=(Student) obj;
// if(s.id==this.id&&
// /*s.name==this.name 因为字符串也是对象*/
// //对象比较用equals
// s.name.equals(this.name)&&
// s.sex==this.sex){
// }
// return true;
// }
// return false;
/**
* Objects的工具类
*/
//如果我们自己写的对象,
//放到集合里,要让集合判断这两个对象相等,
//一定要重写它的equals和HasCode。
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id &&
sex == student.sex &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, sex);
}
}
import java.util.HashSet;
public class Test {
public static void main(String[] args) {
HashSet t = new HashSet();
t.add("Hello");
t.add("Hello");
t.add("Hello");
System.out.println(t.size());
t = new HashSet();
t.add(20);
t.add(20);
t.add(20);
System.out.println(t.size());
t=new HashSet();
t.add(new Student(2222,"张三",'m'));
t.add(new Student(2222,"张三",'m'));
t.add(new Student(2222,"张三",'m'));
System.out.println(t.size());
}
}
1.集合类
集合类有list列,set集和map映射 三大类:
.
Set(集):集合中的对象无排列顺序,并且没有重复的对象。
.
List(队列):集合中的对象按照索引的顺序排列,可以有重复的对象(有索引就有顺序)。
.
Map(映射):集合中的每一个元素都是一对一对的,包括一个key对象,一个Value对象(一个Key指向一个Value).集合中没有重复的key对象,但是vaulue对象可以重复。
.
注意:(1)集合类是进行集合操作的;
(2)无序集不能放重复元素(否则直接覆盖),有序集可以放重复元素。
.
.
2.Collection与Collections
Collection是集合的一个接口,它提供了对集合对象进行操作的通用接口方法,定义了一种规范,是所有集合的基类;
Collections是一个包装类。它包含有各种有关集合操作的静态多态静态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。包括的方法有对集合中的元素进行排序、搜索等。
.
.
3.ArrayList、LinkedList、TreeSet、HashSet
.
作者:YJN_The8
来源:优快云
原文:https://blog.youkuaiyun.com/weixin_44084434/article/details/91362753
版权声明:本文为博主原创文章,转载请附上博文链接!