JavaSE高级之集合类

​下面的内容是对java中的集合类进行的总结,过段时间会分享java的网路编程,多线程等内容,欢迎批评指正。

 

1.Java中的集合是用来存放对象的,即集合是对象的集合,对象是集合的元素,java API集合类位于java.util包中。

2.常用集合类:

  Collection接口,List接口, Set接口,Map接口。接口类结合泛型的使用

3.集合和数组的区别在于集合的长度是动态扩充的,数组中可以存放基本数据类型和引用数据类型,集合中只能存放引用数据类型。

4.java中的集合层次关系

  接口:

    Iterator

    |-Collection

    |    |-Lis

    |    |   |-ArrayList

    |    |   |-LinkedList

    |    |   |-Vector

    |    |       |-Stackt

    |    |-Set

    |       |-HashSet

    |       |-TreeSet

    |-ListIterator

 

  Map

    |-HashMap

    |-HashTable

    |-TreeMap

 

 

Collection接口:

  1.一个Collection对象中可以放不同类型的数据,是Set接口和List接口的父类,元素是否有序是否允许重复取决于具体的实现

  2.Set 为集合,元素无序且不允许重复,List 元素有序,允许重复。

  3.Collection中的常用方法如下:

    添加元素:add(element : object): Boolean

    移除元素:remove(element : object): Boolean

    元素个数:size () : int

    判断是否为空:isEmpty() : Boolean

    判断是否存在该元素:contains(element : objects) : Boolean

迭代器:iterator() : iterator

  产生一个包含所有元素的数组:object[] toArray();

 

List接口

  添加元素: add(index : int. element : object) 

  移除元素:remove(index : int) : object

  获取元素:get(index : int)

  设置元素:set(index : int , element:objects);

  获取元素的索引: indexOf(element : object) : int

迭代器: listIterator() : ListIterator 

 

 

Iterator 接口:

  Iterator称为迭代器,便于实现对容器元素的遍历,所有实现了接口Collection的集合类都有iterator()方法,返回一个实现了Iterator接口的对象,Iterator在遍历中只能单向进行,Iterator接口是为遍历设计的可以取出和删除集合中的元素,但不可以删除其中的元素

 

Iterator中的主要方法:

  Object  next()  指向集合中的下一个元素

  Boolean hasNext()  判断是否还有下一个元素

  Void remove() 移除集合中的元素,执行next() 后只能执行一次remove();

 

Collections 类:

  Collections 类是类似于Arrays类的工具类,它提供一些static静态方法供集合类使用或用来操作集合类

 

Map接口:

  Map内存储的是以键/值对这样成对出现的对象组,通过“键”对象,来查找“值”对象,Map中的“键”是唯一的,key对象和value对象关联在一起

  Map接口中的常用方法:

  Object put(object key, object value) 添加键值对

  Object get(object key) 获取键对应的值

  Set keySet() 返回此映射中包含键的Set视图

 

 

HashMap与HashTable的比较:

  HashTable是线程安全的,也就是说是线程同步的,HashMap是线程不安全的

  HashMap允许将一个null作为一个entry的key或者value 二HashTable不允许

 

如何选择集合类

  Set内中存放的元素师不允许重复的,是无序的,List中的元素是有序的是允许重复的

  Map的应用主要是运用键/值对进行快速查询

  ArrayList和LinkedList 之间的区别在于随机查询的性能上ArrayList的性能要好,但LinkedList对中间元素的删除和添加要好

  HashSet和TreeSet的主要区别在于集合内的元素是否排序

 

泛型的使用

  泛型的作用是对集合中的类型进行限制,避免去元素时进行强制转换

 

  HashMap与Set的结合使用

package cn.sdut.lu;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class HashMapDemo {

    public static void main(String[] args) {

        //HashMap实例化
        HashMap hm = new HashMap();

        //往集合中添加元素
        hm.put(1,new Person("aa",12));
        hm.put(2,new Person("vv",15));

        //获取键视图
        Set s = hm.keySet();

        //利用迭代器遍历键视图
        Iterator I = s.iterator();

        //遍历键视图取得键值
        while(I.hasNext()){
            System.out.println(hm.get(I.next()));
        }
    }
}
时间: 2024-11-02 14:46:15

JavaSE高级之集合类的相关文章

JavaSE高级之GUI编程

 下面主要用到了java中的swing进行界面设计,当然java的GUI不如C#的设计的好看,不过原理还是要会的. 1. GUI Graphical User Interface 用户图形界面     a) 主要包括菜单栏,窗口,工具条,按钮等:     b) Java提供了两个GUI开发的包 java.awt 和 java.swing, java.awt中的Component抽象类是javaGUI中所有类的父类.它规定了所有GUI组件的的的基本特性 j        ava.swing 是在j

LinQ To Objects 高级查询方法

 什么是LinQ To Objects?      用一个例子解释,首先定义一个数组,查询数组中的最大值:   int[] arr = { 123, 2, 3, 45, 654, 2324, 897, 56, 6554, 4, 3, 6, 8, 434 };      旧的方法:    int max=0 ; foreach(int a in arr) { if(a>=max) max=a; } Console.Write("最大值:"+ max);           LinQ

Java多线程与并发库高级应用

想快速精通多线程?看这里  http://blog.chinaunix.net/uid-540802-id-4431193.html 什么是线程         线程,是程序执行流的最小单元.是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源,一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行.在单个程序中同时运行多个线程完成不同的工作,称为多线程.当自己想

【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(二)

[前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 --   [下载]本人刚学习Java时总结的一些JavaSE常见面试题,偶尔在电脑中翻出,重新整理一下分享给需要的人,主要针对初级程序员.想要PDF完整版下载的,评论里留言留下你的邮箱! 21.在Java中,如何跳出当前的多重嵌套循环?  答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环.(Java中支持带标

Oracle官方并发教程之高级并发对象

原文地址,译文地址 译者:李任 目前为止,该教程重点讲述了最初作为Java平台一部分的低级别API.这些API对于非常基本的任务来说已经足够,但是对于更高级的任务就需要更高级的API.特别是针对充分利用了当今多处理器和多核系统的大规模并发应用程序. 本节,我们将着眼于Java 5.0新增的一些高级并发特征.大多数特征已经在新的java.util.concurrent包中实现.Java集合框架中也定义了新的并发数据结构. 锁对象提供了可以简化许多并发应用的锁的惯用法. Executors为加载和管

Linq——高级查询方法入门

            一,Lambda表达式                          lambda表达式刚开始用的时候还很不习惯,因为以前用惯了那种先foreach,再逐个判断的麻烦形式,刚开始用lambda都会在脑子里转一下,变成自己让自己舒服的格式,但是写过几行代码后,就会喜欢上这种形式,首先,它比较简洁,其次,和LINQ组合起来用感觉非常贴近SQL:           二,LINQ高级查询内容简介                                        

各位前辈,我是一个新手有较好的javase基础。但是对javaweb或者说J2EE不是很懂,该如何着手学习呢?推荐几本书吧?谢谢

问题描述 望各位前辈给点建议. 解决方案 学习javaWeb按先后顺序,数据库可以再任何时候学习首先要具备JavaSe的知识,集合,IO,多线程,JDBC,反射等JavaWeb相关基础知识:html,css,javascript,了解http协议特性,JavaWeb开发需要掌握的知识:Servlet,JSP,JSTL,EL,Servlet中相关的概念(Request,Response,Session等等)学使用一门数据库:mysql,oracle等,熟练编写SQL学句学使用一种中间件的容器:To

怎么学javaSE

问题描述 [color=#333399求答:javase是什么啊?具体包含哪些内容?][/color] 解决方案 解决方案二: 1.各种特性和JVM.JDK安装.开发工具2.面向对象的基本概念:求解的思想.设计方法的内涵.对象与类.封装.继承.多态...3.java语言基础:标示符和数据类型.表达式和语句.程序流控制.数组4.面向对象特性:类.生命周期.累的继承和多态5.高级特性:几个关键字.抽象类.接口.包.泛型和**类.枚举类型.包装类与自动装箱拆箱6.异常处理.断言7.IO8.swing.

javascript高级程序设计(第三版)学习笔记(一) 正则表达式整理

1.创建正则表达式 第一种方式:注意这里的正则表达式不能使用单引号或者双引号,如下 var pattern1 = /[abc]/i; // 匹配第一个"a"或"b"或"c",不区分大小写 第二种方式:使用RegExp构造函数创建,该构造函数传入两个参数,都是字符串,所以需要特别注意"\"符号的转换,所有元字符(下面有讲元字符)需要双重转义,如下 复制代码 代码如下: var patt1 = new RegExp("[