1 数组弊端:
1)一旦创建,其长度不可变。2)真是的数组存放的对象的个数是不可知的。
2 Java集合分为Collection和Map两个集合
Collection接口:
Set接口: 元素无序、不可重复的集合
-----HashSet、LinkedHashSet、TreeSet
List接口: 元素有序,可重复的集合 ——看作”动态数组“
----ArrayList(主要的实现类)、LinkedList、Vector
注意:添加进List集合中的元素或对象所在的类一定要重写equals方法,因为要确定集合中是否有这个元素。
Map接口: 具有映射关系“key-value对“的集合
-----HashMap、LinkedHashSet、TreeMap、HashTable(子类: properties)
3 Collection接口:包含存储数据的通用方法
方法使用如下:
package lianxi1; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.Iterator; import org.junit.Test; public class TestConnection { @Test public void test1(){ Collection coll1 = new ArrayList(); coll1.add(342); coll1.add("sfdsa"); coll1.add(new Date()); System.out.println(coll1.size()); System.out.println(coll1);//是由AbstractCollection重写,ArrayList继承过来的 Collection coll2 = Arrays.asList(34,"men","883"); //Arrays.asList提供固定长度数组转为集合的方法 coll1.addAll(coll2); System.out.println(coll1); System.out.println(coll1.contains("883")); System.out.println(coll1.containsAll(coll2)); //coll2.clear(); //——————————————————运行时异常,coll2是Arrays对象,没有clear方法 coll1.clear(); System.out.println(coll2.isEmpty()); System.out.println(coll1.isEmpty()); System.out.println("coll1="+coll1+"coll2="+coll2); System.out.println(coll2.hashCode()); } @Test public void test2(){ Collection coll1 = new ArrayList(); //coll1.add(2,45); --------coll1只能引用Collection的方法,必须强制类型转换,才能用ArrayList独有方法 coll1.add("ff"); coll1.add(33); coll1.add("rr"); coll1.add(45); coll1.add(new Date()); Collection coll2 = new ArrayList(); coll2.add(55); coll2.add(35.432); coll2.add("rr"); Student stu = new Student("3001","wu"); coll2.add(stu); System.out.println(coll1); System.out.println(coll2); // coll1.retainAll(coll2); coll1.removeAll(coll2); System.out.println(coll1); System.out.println(coll2); System.out.println(coll1.equals(coll2)); //toArray() Object[] obj = coll1.toArray(); for(int i=0;i<obj.length;i++){ System.out.print(obj[i]+" "); } System.out.println(); //Iterator() Iterator ite = coll1.iterator(); while(ite.hasNext()){ System.out.println(ite.next()); } //remove(o) coll2.remove(stu); System.out.println(coll2); } }