集合:集合是存储对象数据的集合容器。
集合类可以划分为两种:Set & List
集合比数组的优势:
1.
集合可以存储任意类型的对象数据,数组只能存储同一数据类型的数据
2.
集合的长度是会发生变化的,数组的长度是固定的
Cllection 单例集合的根接口。
List 实现的List接口的集合类,具备的特点:有序,可重复
Set 实现的Set接口的集合类,具备的特点:无序,不可重复
package collection1;
//Collection中的方法
import java.util.ArrayList;
import java.util.Collection;
public class Demo1 {
public static void main(String[] args) {
Collection a = new ArrayList();
a.add("lisen");
a.add("liwenkai");
a.add("liyong");
System.out.println(a.add("li"));
System.out.println(a);
Collection b = new ArrayList();
b.add("ba");
b.add("aa");
b.add("lisen");
// a.addAll(b); //将b中的元素添加到a的集合中。
System.out.println(a);
// b.clear(); //清空集合的内容
// System.out.println(b);
// System.out.println("删除成功吗?"+a.remove("liwenkai")); //remove指定删除数据内容,删除成功则返回true。
System.out.println(a);
a.removeAll(b);
System.out.println(a);
a.retainAll(b);
System.out.println(a);
}
}
package collection1;
import java.util.ArrayList;
import java.util.Collection;
//Collection判断方法
public class Demo2 {
public static void main(String[] args) {
Collection a = new ArrayList();
a.add("lisen");
a.add("liwenkai");
a.add("liyong");
System.out.println("集合是否为空:"+a.isEmpty());
System.out.println("是否包含某个元素:"+a.contains("lisen"));//contains方法依赖equals方法进行比较的
}
}
package collection1;
//Collection接口的contains方法和containsAll方法
import java.util.ArrayList;
import java.util.Collection;
class Person {
int id;
String name;
public Person(int id, String name) {
this.id = id;
this.name =name;
}
@Override
public String toString() {
return " {编号:"+this.id+" ,姓名:"+this.name+"}";
}
@Override
public boolean equals(Object obj) {
Person p = (Person)obj; //强转
return this.id ==p.id; //只要id一样,contains方法就可以判断是否一致
}
//遵守java规范,一般重写了equals方法,都会重写hashcode方法
@Override
public int hashCode() {
// TODO Auto-generated method stub
return super.hashCode();
}
}
public class Demo3 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Person(110,"lisen"));
c.add(new Person(119,"liwenkai"));
c.add(new Person(120,"lisen"));
Collection d = new ArrayList();
d.add(new Person(110,"lisen"));
d.add(new Person(119,"liwenkai"));
System.out.println("c是否包含d集合的所有元素?"+c.containsAll(d));
System.out.println(c);
System.out.println("存在该元素吗?"+c.contains(new Person(110,"lisen")));
}
}
package collection1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
/*
迭代
toArray()
*/
public class Demo4 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Person(110,"狗娃"));
c.add(new Person(119,"狗剩"));
c.add(new Person(120,"铁蛋"));
Object[] arr = c.toArray();
//需求: 把编号是110的人信息 输出。
for(int i = 0 ; i<arr.length ; i++){
Person p = (Person) arr[i]; //从Object数组中取出的元素只能使用Object类型声明变量接收,如果需要其他 的类型需要进行强制类型转换。
if(p.id==110){
System.out.println(p);
}
}
}
}