Java基础知识点总结-Java集合框架(一)

 

      集合框架

 

             【概述】

 

  1. 为什么会出现集合类?

    面向对象语言对事物的体现都是以对象的形式,所以为了对多个对象进行操作,就对对象进行存储,集合是存储对象最常用的一种方式。

  2. 数组和集合都是容器,有何不同?

    数组虽然也可以存储对象,但长度是固定的;而集合的长度是可变的

    数组可以存储基本数据类型,集合只能存储对象

    数组存储的数据类型必须都一样,而集合存储的数据类型可以不同

  3. 集合类的特点?

    集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象

                  【集合框架的构成及分类】

 

             【集合框架中的常用接口】

 

                    Collection接口有两个子接口:List(列表)        Set(集)

 

                    -List:可存放重复元素,元素存取是有序的

 

                    -Set:不可以存放重复元素,元素存取是无序的

 

             【集合框架中的共性方法(以ArrayList加以说明)】

 

  • add(E e):将制定元素添加到此列表尾部  其中的参数类型是Object类型,用于接收任意类型的对象;集合中存放的都是对象的引用(地址)

  • addAll(Collection<? extends E>c):按照指定collection的迭代器所返回的元素顺序,将collection中的所有元素添加到次列表

  • clear():移除此列表中的所有元素

  • contains(Object o):判断此列表中是否包含制定元素    

  • isEmpty():判断此列表是否为空,即长度是否为0

  • remove(Object o):移除此列表中首次出现的指定元素(如果存在)

  • removeAll(Collection<?extends E> c):移除此列表中那些也包含在指定Collection中的元素

  • retainsAll(Collection<? extendsE> c):只保留此列表中那些也包含在指定Collection中的元素

  • size():返回次列表的长度

  • Object[]toArray():返回包含此 collection中所有元素的数组

  • <T> T[] toArray(T[] a):返回包含此 collection中所有元素的指定数据类型数组

    注意:传入指定类型的数组的长度应该定义多长呢?

            当传入指定元素的数组长度小于集合的size,那么该方法内部会创建

            一个新数组,长度为集合的size;当传入指定元素类型的数组长度大

            于集合的size,不会创建新数组,而是使用传递进来的数组,大于集

            合size的部分会被null填充;所以传递一个长度为集合size的数组

            最优

    例:

 

import java.util.*;

class CollectionToArray {
	public static void main(String[] args) {
		ArrayList<String> al = new ArrayList<String>();
		al.add("java01");
		al.add("java02");
		al.add("java03");
		al.add("java04");
		String[] arr = new String[5];// 定义接收数组的数组变量
		arr = al.toArray(arr);// 返回由集合转换的数组
		sop(Arrays.toString(arr));
	}

	public static void sop(Object obj) {
		System.out.println(obj);
	}
}

 

 

 

  • iterator():返回在此列表的元素上进行迭代的迭代器;利用该迭代器中的next(),hasNext()等方法可获取此列表中的元素

    如:ArrayList al = new ArrayList();

            Al.add(…);

            …;

            for(Iterator it =al.iterator();it.hasNext();)

                   System.out.println(it.next());

    Iterator迭代器

           在访问集合中的元素时,为了可以直接访问,就把这些方法定义在集合内      部,定义成内部类。每个容器的数据结构都不相同,所以具体的方法细节

           也不一样,但我们可以把共性的内容抽取出来,定义成Iterator接口,即

           迭代器。这些内部类都符合Iterator规则。

    高级for循环

           格式:for(数据类型变量名 :被遍历的集合(Collection)或数组)

           高级for循环对集合进行遍历,只能集获取合中的元素,不能对集合进行

           其他操作;而迭代器除了能对集合进行遍历外,还可以remove集合中的

           元素,如果是ListIterator,还可以在遍历集合的过程中对集合进行增删改

           查的操作

           传统for和高级for有什么区别呢?

                  高级for有一个局限性:必须有被遍历的目标

           建议在遍历数组的时候使用传统for,因为传统for可以定义角标

           例:

 

		HashMap<Integer, String> hm = new HashMap<Integer, String>();
		hm.put(1, "java01");
		hm.put(2, "java02");
		hm.put(3, "java03");
		Set<Integer> keySet = hm.keySet();
		for (Integer key : keySet) {
			sop("key:" + key + "\tvalue:" + hm.get(key));
		}
		Set<Map.Entry<Integer, String>> entrySet = hm.entrySet();
		for (Map.Entry<Integer, String> me : entrySet) {
			Integer key = me.getKey();
			String value = me.getValue();
			sop(key + "---" + value);
		}

 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值