集合与数组
数组:(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。
集合:(只能存储对象,对象类型可以不一样)的长度可变(动态的数组),可在多数情况下使用。
集合的分类:
在java集合中,集合分了两个大的接口,分别为:Collection接口和Map接口。
Collection接口又分为:List接口和Set接口。分别由不同的子类来实现。
集合的方法:
我先创建一个ArrayList对象,用ArrayList来说明一下集合里面的基本方法:
Collection coll = new ArrayList();
(1)、size()方法:返回集合中元素个数
System.out.println(coll.size());
(2)、add(Object obj):向集合中添加一个元素(注:现在我没有使用泛型,所以不同类型的数据都能添加到集合中)
coll.add("AA"); coll.add(new Date()); coll.add(123); coll.add('B');
(3)、addAll(Collection coll):将形参coll中包含的所有元素添加到当前集合中
Collection coll1 = Arrays.asList(1,2,3); coll.addAll(coll1);
这里是将coll1集合里面的元素全部添加到coll集合当中。
(4)、isEmpty():判断集合是否为空,返回true 或者 false
System.out.println(coll.isEmpty());
(5)、clear():清空集合元素
coll.clear();
(6)、contains(Object obj):判断集合是否包含指定的obj元素,如果包含,返回true,否则返回flase
boolean b1 = coll.contains("AA"); System.out.println(b1);
(7)、containsAll(Collection coll):判断当前集合是否包含coll中所有的元素
Collection coll2 = new ArrayList(); coll2.add(123); coll2.add('B'); boolean b2 = coll.containsAll(coll2); System.out.println(b2);
这里是coll里面的元素是否包含coll2集合里面的全部元素,若包含全部元素,则返回true,否则返回false。
(8)、retainAll(Collection coll):求当前集合与coll的共有的元素,返回给当前集合(就相当于数学的交集)
coll.retainAll(coll2); System.out.println(coll);
(9)、remove(Object obj):删除集合中的obj元素。若删除成功,返回true;否则返回false。
boolean b3 = coll.remove(123);
(10)、removeAll(Collection coll):从当前集合中删除包含在coll中的元素。(相当于数学集合的差)
coll.removeAll(coll2);
(11)、toArray():将集合转化为数组
Object[] obj = coll.toArray(); for(int i=0;i<obj.length;i++){ System.out.println(obj[i]); }
集合的遍历方法:
Collection接口的遍历方法:
方法一:使用迭代器Iterator实现集合的遍历
Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(789); coll.add("AA"); //iterator:返回一个Iterator接口实现类的对象,迭代器Iterator实现集合的遍历 Iterator i = coll.iterator(); while(i.hasNext()){ System.out.println(i.next()); }
方法二:使用增强for循环实现集合(数组)的遍历
Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(789); coll.add("AA"); //增强for循环实现集合的遍历 for(Object i:coll){ System.out.println(i); } String[] str = new String[]{"AA","BB","CC"}; //遍历的类型 +变量 :遍历的数组 for(String i:str){ System.out.println(i); }
Map接口的遍历方法:
(1)、Set keySet():遍历 key 集
//遍历 key 集 Set set = map.keySet(); for(Object obj1 : set){ System.out.println(obj1); }
(2)、Collection values():遍历value 集
//遍历value 集 Collection values = map.values(); Iterator i = values.iterator(); while(i.hasNext()){ System.out.println(i.next()); }
(3)、Set entrySet():遍历"key-value"对
//遍历"key-value"对 //方式一 Set set1 = map.keySet(); for(Object obj2 : set1){ System.out.println(obj2 + "---->"+map.get(obj2)); } //方式二: Set set3 = map.entrySet(); for(Object obj3 : set3){ Map.Entry entry = (Map.Entry) obj3; // System.out.println(entry.getKey() + "---->" + entry.getValue()); System.out.println(entry); }