Collection 层次结构 中的根接口。
List的集合
有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
list的实现子类
ArrayList
add(E e) 将指定的元素添加到此列表的尾部。
add(int index, E element) 将指定的元素插入此列表中的指定位置。
addAll(Collection<? extends E> c) 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部
size() 返回此列表中的元素数。
contains(Object o) 如果此列表中包含指定的元素,则返回 true。
isEmpty() 如果此列表中没有元素,则返回 true
// contains indexof remove 方法检查的时候 比较的是对象的equals方法
public static void main(String[] args) {
ArrayList list =new ArrayList();
ArrayList list1 =new ArrayList();
//add(E e) 将指定的元素添加到此列表的尾部。
list.add(0);
list1.add(1);
//add(int index, E element) 将指定的元素插入此列表中的指定位置。
list.add(1, "牛逼");
list1.add(1, "牛逼1");
//addAll(Collection<? extends E> c) 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部
list.addAll(list1);
show(list);
System.out.println("----");
//size() 返回此列表中的元素数。
int size=list.size();
System.out.println(size);
//contains(Object o) 如果此列表中包含指定的元素,则返回 true。
boolean a= list.contains("牛逼");
System.out.println(a);
System.out.println("------------");
//isEmpty() 如果此列表中没有元素,则返回 true
System.out.println(list.isEmpty());
//set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。
list.set(0, "垃圾");
show(list);
System.out.println("-------------");
//remove(int index) 移除此列表中指定位置上的元素。
list.remove(1);
show(list);
}
public static void show(ArrayList list){
for (Object object : list) {
System.out.println(object);
}
}
Set的集合
一个不包含重复元素的 collection
* set集合 赋值不可重复,不可为空
- set接口的实现类
- HashSet :
- TreeSet :
//HashSet底层是HashMap实现的
HashSet<String> hashSet=new HashSet<>();
//HashSet底层是HashMap实现的
hashSet.add("明天");
hashSet.add("晴天");
hashSet.add("你好");
for (String string : hashSet) {
System.out.println(string);
}
- 1 元素重复的依据是什么
- 默认情况继承Object 走Object 的hashCode 和equals方法决定的对象的地址
- 先判断是hashCode值相同之后,在判断equals方法
- hashCode不相等,一定不是相同对象
- 2重复的时候 添加的是把之前的覆盖掉还是添加不上
- 是添加不上 ,不是覆盖
在类中重新hashCode 和equals方法
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + stuID;
return result;
}
```java
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Students other = (Students) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (stuID != other.stuID)
return false;
return true;
}