数组与集合的区别
存储类型:
- 数组可以储存基本数据类型,有可以储存引用数据类型,基本数据储存的是值,引用数据类型储存的是地址值
- 集合只能储存引用数据类型(对象)集合中也可以储存基本数据类型,但是在储存的时候会自动装箱变成对象
长度:
- 数组的长度是固定的
- 集合的长度是可变的,可以根据元素的增加而增长
- 数组中长度的大小用length,集合中用size()
应用场景:
- 如果元素的长度是固定的推荐使用数组
- 如果数组元素的个数不是固定的推荐使用集合
Collection
- Collection 是一个接口
- 有很多实现类如ArrayList、HashSet、LinkedList等等
public class Test {
public static void main(String[] args) {
//报红,Collection是一个接口,不能实例化
// Collection<String> c = new Collection<String>();
}
}
怎么办看看api,有哪些实现类,没有api,也没有关系,在idea中选中此接口 ctrl + alt + B
public class Test {
public static void main(String[] args) {
//报红,Collection是一个接口,不能实例化
//向上转型
Collection<String> c = new ArrayList<>();
c.add("a");
c.add("b");
System.out.println(c);
}
}
Collection的方法
建议没事的时候自己使用使用方法,增加熟练度,当然我所说的不是看着别人的代码敲
- boolean add(E e); //添加
- boolean remove(Objiect o); //删除
- void clear(); //清除
- boolean contains(Object o); //是否包含
- boolean isEmpty(); //是否为空
- int size(); //集合大小
- Collection带All的基本方法
- boolean addAll(Collection c) //把集合看作一个对象添加给另外一个集合
- boolean removeAll(Collection c) //删除两个集合的是交集,返回值是布尔值
- boolean containsAll(Collection c) //这个集合是否包含另外一个集合的所有元素,返回值是布尔值
- boolean retainAll(Collection c); 取交集,如果调用的集合改变就返回true,如果调用的集合不变就返回false,主要看c
例子
import java.util.ArrayList;
import java.util.Collection;
public class Collection1 {
public static void main(String[] args) {
// demo1();
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
System.out.println(c); //[a,b,c,d]
c.remove("b");
System.out.println(c); //[a,c,d]
c.clear();
System.out.println(c); //[]
c.add("a");
c.add("b");
c.add("c");
System.out.println(c.contains("b")); //[a,b,c]
System.out.println(c.isEmpty()); //false
System.out.println(c.size()); //3
}
private static void demo1() {
/*
* add()的参数是一个对象,返回值是布尔值
* ArrayList的父类的父类重写toString()方法,所以在打印对象的引用的时候,输出结果不是Object类中toString的结果
*/
Collection c = new ArrayList();
boolean b = c.add("abc");
boolean b2 = c.add("abc");
boolean b3 = c.add(true);
boolean b4 = c.add(100);
boolean b5 = c.add(new Student("张三",23));
System.out.println(b); //true
System.out.println(b2); //true
System.out.println(b3); //true
System.out.println(b4); //true
System.out.println(b5); //true
System.out.println(c.toString());
}
}
Student类
public class Student {
private String name;
private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
};
}