java集合 1

这是我第一次写博客,学习java之路相通过写博客记录下来,如果描述有错误,请多多指导!

1.1 集合的演变

  早期java中只有3个集合类,分别为Vector类,Hashtable类和Stack类。这3个类提供了基本的集合功能,但并不令人完全满意。该方案没有足够的灵活性让我们实现多种情况的功能,所有方法都是同步方法,用于保证线程安全性,但这也造成了性能损失。

但Java5后出现了另外一个重大的变化,新增特性甚至改变了集合类的使用语法。

  java5之前,集合中中无法直接添加基本类型值,例如,添加int值时必须先将其封装在相应Integer包装器的实例中。不过。自从java5引入名为 自动拆箱/装箱的特性,我们并不需要手动封装在相应的Integer包装器的实例中,由IDE自动为我们完成,我们并不会看到该过程。

	Map  map=new HashMap();
	//java1.5之前,添加int值必须先将其封装在相应的Integer包装器的实例中
	map.put("one", new Integer(1));
	//自动为我们装箱
	map.put("two", 1);

1.2 集合类与接口

  添加到集合中的对象称为元素(element),一些集合类允许存在重复元素,而一些事不允许的。这里的重复是指用equals()方法比较2个元素,如果返回值为true,则重复,否则相反。

1.21 Collection

集合类层次结构的最顶端是Collection接口,大部分集合类实现经常用到该接口中的方法。

如果想访问集合元素,可通过iterator()方法访问,并指出该方法返回的对象实现了Iterator接口,也就是iterator()方法返回一个Iterator对象,使用该对象提供的方法我们就能依次读取对象中的集合。

	List<Student> list=new ArrayList<Student>();
	Student student1=new Student();
	student1.setStuName("小瀚");
	student1.setStuAge(20);

	Student student2=new Student();
	student2.setStuName("小瀚");
	student2.setStuAge(20);

	list.add(student1);
	list.add(student2);

	//得到当前Iterator对象
	Iterator<Student> it=list.iterator();
	//提示迭代器是否已经返回集合中所有对象的引用
	while(it.hasNext()){
	    //返回指向集合中下一个对象的应用
	    Student stu=it.next();
	    System.out.println(stu.getStuName()+" "+stu.getStuAge());
	}

 1.22 List

    集合类的其中一个特点是对集合中元素进行有意义的排序,List接口定义了这种排序,也就是说,如果使用List实现并检索元素的引用,那么返回元素的顺序是可以预订的,该顺序是是由元素在集合中的位置决定的,并且在添加元素的时候可以显示或隐式地指定元素位置。下面我使用如下代码来演示下

        List<Student>stuList=new ArrayList<Student>();
        stuList.add(new Student(123,"小瀚",22));
        stuList.add(new Student(456,"小露",22));

代码中姓名为 小瀚 的对象占用列表的第一个位置,也就是索引0,而 小露 对象占用第二个位置,也就是说,如果没有显示指定元素的位置,则element插入到末尾。相反,如果我们指定特定位置,可以写Demo试试看

	List<Student> list=new ArrayList<Student>();
		Student student1=new Student();
		student1.setStuName("小瀚");
		student1.setStuAge(20);

		Student student2=new Student();
		student2.setStuName("小露");
		student2.setStuAge(20);

		Student student3=new Student();
		student3.setStuName("小miss");
		student3.setStuAge(20);

		list.add(student1);
		list.add(student2);
		list.add(1,student3);

		//得到当前Iterator对象
		Iterator<Student> it=list.iterator();
		//提示迭代器是否已经返回集合中所有对象的引用
		while(it.hasNext()){
			//返回指向集合中下一个对象的应用
			Student stu=it.next();
			System.out.println(stu.getStuName()+" "+stu.getStuAge());
		}

输出结果为:

小瀚 20

小miss 20

小露 20

list.add(1,student3);

该add()重载调用中,第一个参数表示该Student对象插入到列表中对应的索引1的位置,该位置原来由 小露 对象占用,执行这段代码后,新增的对象会插入到集合中的2个原有对象之间,因此 小露对象的索引变成了2。

还有另外一个方法,set()方法,与add类似,不过set()方法使用来替换指定位置的当前对象。

List接口不但定义了带索引未知的add()方法,还包含按索引移除对象的remove()方法,如下代码

stuList.remove(0);

这样将移除索引位置0上的对象,也就是小瀚这个对象,移除集合的第一个元素,其他对象索引由于移位操作而向下移位。remove()方法内部原理应该是这样的吧,调用remove()方法会依次查找整个列表并将列表中的每一个元素与传入该方法的对象相比较,如果List中包含的元素不多,或需要移除的element位置靠前,那么过程很快,但是,如果List较大或是比较靠后,那么需要多次遍历和比较才能找到对应的对象,并移除掉。不只是remove()方法是这样的,例如Collection接口中定义的contains()方法和indexOf()方法都有此限制。

 1.23 ArrayList

ArrayList的一些特质,如下

(1)ArrayList中能够包含重复的元素

(2)ArrayList中能够添加空值

(3)ArrayList类不是固有线程安全,因此在创建多线程使用ArrayList时,需要自行负责同步对ArrayList的修改。

这是我学java的第一篇博客,不对的地方请多多指教!

时间: 2024-10-08 00:54:26

java集合 1的相关文章

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度

Java 集合

在Java Collections Framework中,不同类型的集合使用不同类型的数据结构以不同的方式存储它们的元素. 集合框架提供了遍历集合的以下方法: 使用迭代器 使用for-each循环 使用forEach()方法 使用迭代器 迭代器可以对集合执行以下三个操作: 检查是否有尚未访问的元素. hasNext() 检查是否有下一个访问的元素. next() 删除集合的最后访问元素. remove() 例子1 使用迭代器打印列表的所有元素: import java.util.ArrayLis

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

Java集合相关面试问题和答案

Java集合相关面试问题和答案 面试试题 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1.2提出了囊括所有集合接口.实现和算法的集合框架.在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久.它还包括在Java并发包中,阻塞接口以及它们的实现.集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类.

Java集合

JAVA集合小结   有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉树排序) Map AbstractMap 否 使用key-value来映射和存储数据,Key必须惟一,value可以重复 HashMap TreeMap 是(用二叉树排序) 几个面试常见问题:1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?   A:Vector和HashT

一大波Java来袭(五)——Java集合概述

把"Java集合"比作是容器,可以把多个对象(实际:是对象的引用),扔在容器中. JDK1.5之前,被丢进集合中的对象,会丢失起数据类型.默认为Object类型 JDK1.5之后,不会丢失数据类型,因为引入了"泛型"(作为下文重点) 本文将结合数据结构,重点讲述Java的4种集合体系的功能和用法,并给出不同应用场景改如何选择? 一.同样是用于"存储数据",既可以使用"数组",有可以使用"集合",有什么区别吗

Java集合总览

这篇文章总结了所有的Java集合(Collection).主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式. Arrays Array是Java特有的数组.在你知道所要处理数据元素个数的情况下非常好用.java.util.Arrays 包含了许多处理数据的实用方法: Arrays.asList:可以从 Array 转换成 List.可以作为其他集合类型构造器的参数. Arrays.binarySearch:在一个已排序的或者其中一段中快速查找. Arrays.copyOf:如果你

【Java集合源码剖析】HashMap源码剖析

转载请注明出处:http://blog.csdn.net/ns_code/article/details/36034955 HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,

JAVA集合框架

收藏 查看我的收藏 146有用+1 56 编辑 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台.动态的Web.Internet计算.从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet.集合框架是为表示和操作集合而规定的一种统一的标准的体系结构.任何集合框架都包含三大块内容:对外的接口.接口的实

java集合之整体架构

Java集合框架总结 Java集合是java 提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.* Java集合主要可以划分为4个部分:List列表.Set集合.Map映射.工具类(Iterator迭代器.Enumeration枚举类.Arrays和Collections). Java集合工具包框架图(如下): 大致说明: 看上面的框架图,先抓住它的主干,即Collection和Map. 1. Collection是一个接口,是高