`

day_16Java集合类

阅读更多

 

 

掌握集合类接口的常用方法

掌握集合类接口的实现类

掌握迭代器的创建和使用

 

一、集合类的概述

 

java.util包中提供了一些集合类,这些集合类又为容器。

 

数组与集合类:

 

       数组:长度固定;用来存放基本类型的数据

       集合类:长度可变;用来存放对象的引用

 

常用的集合类:

        List、Set、Map

 

List集合和Set集合-->实现Collection<E>接口

 

常用集合的继承关系

 

HashMap(TreeMap)---> Map--->java.lang.Object

(HashSet/TreeSet--->set)/(ArrayList/LinkedList----->list)---->Collection--->java.lang.Object

 

 

二、集合类接口的方法

 

Collection接口是层次结构中的根接口。

构成Collection的单位-->元素

Collection接口不可直接使用,但该接口提供了添加、删除元素、管理数据的方法。

 

List Set实现了Collection接口,这些方法可以被List集合和Set集合是通用的。

 

2.1 List集合

 

List继承Collection接口,因此包含Collection中的所有方法。

又因为List是列表类型,所有List接口还提供了一些适合于自身的常用方法。

 

常用的方法:

void add(int index,E element)

在列表的指定位置插入指定元素(可选操作)。将当前处于该位置的元素(如果的话和所后续元素向右移动(在其索引中加 1)。

...查看api

 

List接口中适合于自身的方法都与索引有关。

由于List集合以线性方式存储对象,因此可以通过对象的索引来操作对象。 

 

方法:

add(int index, E element) 

          在列表的指定位置插入指定元素(可选操作)。

set(int index, E element) 

          用指定元素替换列表中指定位置的元素(可选操作)。

 

 

LinkedList是链式的集合--LinkedList底层是由双向循环链表实现,里面的数据在逻辑上的存储是连续的,连续自然也就有顺序了

 

Iterator使用JDK提供的迭代接口进行Java集合的迭代。

----- 在Java中Iterator为一个接口,它只提供了迭代了基本规则,在JDK中他是这样定义的:对 collection 进行迭代的迭代器。

 

2.1.2 代码案例

 

       创建集合对象,并向集合中添加元素,通过set()方法修改集合中元素,再通过add()方法向集合中添加元素,通过迭代器遍历集合元素。

 

package day16;

 

import java.util.Iterator;

import java.util.LinkedList;

import java.util.List;

 

public class ListTest {

public static void main(String[] args) {

String a = "A",b = "B",c = "C",d = "D",e = "E";//定义要插入的集合的字符串对象

List<String> list = new LinkedList<String>();  //创建List集合

list.add(a);                                   //向集合中添加元素

list.add(d);

list.add(e);

@SuppressWarnings("unused")

Iterator<String> itr = list.iterator();       //创建集合的迭代器

System.out.print("修改之前的= ");

while(itr.hasNext()){                         //遍历集合中的元素

System.out.print(itr.next()+" ");         //循环获取集合中的元素

}

System.out.println();

 

/*E set(int index,

     E element)*/

list.set(1, b);

list.set(2, c);

Iterator itr2 = list.iterator();

while(itr2.hasNext()) {

System.out.print("通过set修改之后的集合 = "+itr2.next()+" ");

 

}

}

}

 

运行结果:

修改之前的= A 修改之前的= D 修改之前的= E 

通过set修改之后的集合 = A 通过set修改之后的集合 = B 通过set修改之后的集合 = C 

 

2.1.3

      创建List集合对象,通过add()方法向集合中添加元素,并将对象apple、b在集合中第一次与最后一次出现的索引位置输出。

 

代码案例:

 

package day16;

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.List;

 

public class ListTest {

public static void main(String[] args) {

 

/*创建List集合对象,通过add()方法向集合中添加元素,

并将对象apple、b在集合中第一次与最后一次出现的索引位置输出。*/

 

String a = "A",apple = "APPLE",b = "B",c = "C";

List<String>  list = new  ArrayList<String>();

list.add(a);

list.add(apple);

list.add(b);

list.add(b);

list.add(c);

list.add(c);

list.add(apple);

list.add(b);

 

System.out.print(list);

/*Iterator itr = list.iterator();

System.out.println("输出集合中的元素:");

while(itr.hasNext()) {

System.out.print(itr.next()+"  ");

}*/

System.out.println();

 

System.out.println("apple的首次出现位置 = "+list.indexOf(apple));

System.out.println("apple的最后一次出现位置 = "+list.lastIndexOf(apple));

System.out.println("b的首次出现位置 = "+list.indexOf(b));

System.out.println("b的最后一次出现位置 = "+list.lastIndexOf(b));

}

}

 

运行结果:

[A, APPLE, B, B, C, C, APPLE, B]

apple的首次出现位置 = 1

apple的最后一次出现位置 = 6

b的首次出现位置 = 2

b的最后一次出现位置 = 7

 

 

java 集合ArrayList和LinkedList

 

1.ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦

            查询效率高,增删效率低 轻量级 线程不安全

2.LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引  但是缺点就是     查找非常麻烦 要丛第一个索引开始,线程安全    查询效率低,增删效率高 

 

 

3.set集合

 

   由于Set集合中不允许存在重复值,因此可以使用Set集合中的addAll()方法,将Collection集合添加到Set集合中并除掉重复的值。

 

创建一个List集合对象,并往List集合中添加元素。再创建一个Set集合,利用setAll()方法把List集合对象存入到Set集合中并除掉重复值,最后打印Set集合中的元素。

 

3.1代码案例:

package day16;

 

import java.util.ArrayList;

import java.util.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

 

public class SetTest {

public static void main(String[] args) {

/*创建一个List集合对象,并往List集合中添加元素。

再创建一个Set集合,利用setAll()方法把List集合对象存入到Set集合中并除掉重复值,

最后打印Set集合中的元素。*/

 

String a = "A",b = "B",c = "C";

List<String> list = new ArrayList<String>();//创建List集合对象

list.add(a);                                //向集合中添加元素

list.add(b);

list.add(c);

list.add(a);

Set<String> s = new HashSet<String>();       //创建set集合对象

s.addAll(list);                              //将List集合对象添加到Set集合对象中

Iterator<String> i = s.iterator();           //创建Set集合迭代器

System.out.println("Set集合输出: ");

while(i.hasNext()) {

System.out.print(i.next());

}

}

}

 

运行结果:

Set集合输出: 

ABC

 

 

4.Map

 

4.1基础概念

 

Map接口提供了将键映射到值的对象。

一个映射不能包含重复的键;每个键最多只能映射到一个值。

 

       由于Map集合中的元素是通过key、value进行存储的,要获取集合中指定的key值或value值,

需要先通过相应的方法获取key集合或 value集合,再遍历key集合或value集合获取指定值。

 

代码案例:

 

向一个Map集合中插入数据并根据key的值打印集合中的元素。

 

4.2代码案例

 

package day16;

 

import java.util.HashMap;

import java.util.Map;

 

public class MapTest {

public static void main(String[] args) {

 

/*向一个Map集合中插入数据并根据key的值打印集合中的元素。*/

Map<String,String> map = new HashMap<String,String>();//创建Map集合

map.put("1", "apple");                                //像集合中添加对象

map.put("2", "pear");

map.put("3", "dooder");

for(int i = 1;i <= 3;i++){

System.out.println(map.get(""+i)); //输出对应位置的元素,(""+i)是将其转换为字符串

}

}

}

 

运行结果:

apple

pear

dooder

 

 

五、案例

           Map集合可以保存键值映射关系,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息。

 

省市级的联动。

 

六、集合类接口的实现类

 

查看参考文档

 

七、迭代器

 

 

步骤

1.通过调用类集的iterator() 获得对类集的迭代方法

2.建立一个调用hasNext() 

 

3.在循环体内部next() 返回迭代的下一个元素,来获得每一个元素。

 

 

java.util.Iterator<E>

子接口:

  ListIterator<E>, 

 

方法:

hasNext() 如果仍元素可以迭代,则返回 true。

next()   返回迭代的下一个元素。

remove()   从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

          

 

总结

 

重点掌握集合的遍历、添加对象、删除对象的方法。

 

星期二, 十一月 17, 2015 18:59:32

 

分享到:
评论

相关推荐

    DAY_13 Java常用类及异常处理.md

    该文档从简单的Java程序入手,介绍了如何产生随机数,介绍了正则表达式的关键,在实际开发中,我们需要知道正则表达式的规律和格式,切记不可忽略这些小小的细节问题。同时本文还介绍了异常的几种情况,更清晰的认识...

    DMS_day01_am_java的dms项目_达内java课程dms项目上课代码_

    6. **集合框架**:Java集合框架如ArrayList、LinkedList、HashMap等,会在处理数据时频繁用到,比如存储查询结果或临时数据。 7. **文件操作**:可能涉及到读写配置文件或日志文件,需要掌握File和IO流的相关知识。...

    传智播客_Java培训_毕向东_Java基础源代码day03

    【Java基础源代码day03】是传智播客Java培训课程中毕向东老师讲解的一天教学内容,主要涵盖了Java编程语言的基础知识点。在这一天的学习中,学生将深入理解Java的核心概念,为后续的Java开发打下坚实的基础。以下是...

    day12_code_java_

    10. 集合框架(Collections Framework):Java集合框架提供了一组接口和实现这些接口的类,如ArrayList、LinkedList、HashSet、HashMap等,它们方便地存储和操作对象。 "day12_code"可能包含了以上概念的示例代码,...

    day13_java_源码

    "day13_java_源码"中的例子可能包含了如何创建和使用抽象类和接口的实例。假设我们有一个抽象类`AbstractExample`和一个接口`InterfaceExample`: ```java abstract class AbstractExample { abstract void ...

    传智博客_Java培训_毕向东_Java基础课件

    5. **集合**(传智播客_Java培训_毕向东_Java基础[06-集合].pdf):Java集合框架是处理对象集合的重要工具,包括List、Set、Queue、Map等接口及其实现类,如ArrayList、LinkedList、HashMap等,以及它们的使用场景和...

    传智播客_Java培训_毕向东_Java基础源代码_day02

    在本资源"传智播客_Java培训_毕向东_Java基础源代码_day02"中,我们聚焦于Java编程语言的基础学习,由知名讲师毕向东指导。这个压缩包包含了day02的学习材料,主要是源代码,是为初学者精心准备的实践教程。 Java是...

    Wiley_Java in 60 Minutes a Day_2003

    7. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类的使用。 8. **多线程**:学习如何创建和管理线程,理解同步和互斥的概念,以及如何避免线程...

    黑马程序员-Java语言进阶-源码、教程笔记.zip

    day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 day08_File类、...

    day17 java

    创建一个新的Java工程,可以通过菜单栏的File -&gt; New -&gt; Java Project,然后输入工程名称,比如按照学习进度命名(例如day01)。 **Eclipse使用技巧:** 1. **创建Java工程**:通过File -&gt; New -&gt; Java Project,...

    Day17 Java 集合和泛型.pdf

    Java集合框架是Java编程语言中用于存储和操作对象集合的一组接口和类。在Java中,集合通常分为三大类:List、Set和Map。本知识点主要关注于Map接口的介绍和几种Map实现类的详解。 首先,Map是一个键值对集合,其中...

    Java_day17上课资料.zip

    ArrayList、LinkedList、HashSet、HashMap等是常用的集合类,它们各自有不同的性能特点和适用场景。理解这些集合的内部实现和操作效率,可以帮助我们写出更高效、更灵活的代码。 最后,如果课程涵盖了设计模式,...

    Java集合 练习代码

    ArrayList是Java集合框架中的一个接口实现类,基于动态数组实现,提供了按索引访问元素的高效性能。你可以通过增删改查(Add、Remove、Set、Get)等基本操作来管理ArrayList中的元素。在day20的代码中,可能会包含...

    传智播客_Java培训_毕向东_Java基础源代码day04

    4. **数组**:Java中的数组是一组相同类型的元素集合,可以使用索引来访问每个元素。数组的创建、初始化和遍历是学习的重点,理解数组的概念对于处理批量数据至关重要。 5. **方法(Method)**:方法是Java中封装...

    week4_code_javaprogramming_java_bluej_

    BlueJ提供了一个互动的平台,通过它可以创建、测试和修改Java类,帮助学习者逐步理解面向对象编程的基本概念。 Java编程语言的关键知识点包括: 1. **基本语法**:包括变量声明、数据类型、运算符、流程控制语句...

    Javaw基础课程笔记.zip

    day07、Java API概述_Scanner 概述和使用_Random使用_ArrayList集合用法。 day08:Java 字符串的基本操作_静态static关键字 day09:Java 类的继承_super和this关键字。 day10:Java 接口。 day11:Java final ...

    day07-code_java基础_

    这个名为"day07-code_java基础_"的压缩包文件显然包含了一系列针对初学者的Java基础教程,其中可能涵盖了从基本语法到核心概念的各种主题。下面我们将详细探讨Java基础的一些关键知识点。 首先,Java的基础部分通常...

    Java_day16上课资料.zip

    【Java_day16上课资料.zip】是一个包含Java编程学习资源的压缩文件,主要针对已经学习了前15天课程的学生,旨在进一步深化对Java语言的理解。这个资料包可能包括课件、代码示例、练习题及解答等,帮助学生巩固和扩展...

    basic_day01_v1_pm_all.zip

    8. **集合框架**:包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等具体实现类的使用。 9. **IO流**:学习如何进行文件读写,以及标准输入输出流的使用。 10. **多线程**:理解线程的概念...

    java_diary_18.rar_JFC_swing_反射机制_国际化 java

    Day01:java环境与数据类型 Day02:数据运算与数组 Day03:面向对象 Day04:修饰符与类权限 Day05:类与接口 Day06:集合类型 Day07:反射机制与内部类 Day08:异常与Swing图形界面 Day09:swing图形界面与AWT事件...

Global site tag (gtag.js) - Google Analytics