`

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

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

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

    java学习资料

    第一章Unix Day01:UNIX 介绍和基本指令 Day02:UNIX 指令(二)和VI 的使用第二章CoreJava Day01:java 的配置和编译 Day02:进制转换和补码运算 ...Day15:java 的集合类 Day16:java 的异常处理 Day17:Swing 介绍

    Javaw基础课程笔记.zip

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

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

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

    达内Java培训-CoreJava全程笔记(WORD唐亮版)

    CoreJava DAY01 Java概述 1 ...CoreJava DAY16 反射、注释 57 CoreJava DAY17 GUI 64 CoreJava DAY18 awt event 81 CoreJava DAY19-20 多线程 85 CoreJava DAY21-22 IO 95 CoreJava DAY23 网络编程 107

    跟我学Java-day14-ArrayList集合.pdf

    day14-ArrayList集合 1.ArrayList 1.1ArrayList类概述【理解】 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 ArrayList集合的特点 底层是数组实现的,长度可以变化 泛型的使用 ...

    达内 CoreJava老师笔记汇总

    CoreJava DAY01 Java概述 1 ...CoreJava DAY16 反射、注释 108 CoreJava DAY17 GUI 120 CoreJava DAY18 awt event 146 CoreJava DAY19-20 多线程 154 CoreJava DAY21-22 IO 174 CoreJava DAY23 网络编程 197

    集合类day08.docx

    集合类day08.docx

    CoreJava笔记

    CoreJava笔记 CoreJava DAY01 Java概述 1 ...CoreJava DAY16 反射、注释 57 CoreJava DAY17 GUI 64 CoreJava DAY18 awt event 81 CoreJava DAY19-20 多线程 85 CoreJava DAY21-22 IO 95 CoreJava DAY23 网络编程 107

    跟我学JAVA-day11-类和对象.pdf

    day11-类和对象 1. 类和对象 1.1 类和对象的理解【理解】 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象 类是对象的数据类型,类...

    java常用工具类的使用

    在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...

    java进阶13天资料.zip

    day05-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类 day06-Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法 day07-异常,线程的创建方式,,线程安全,线程同步 day08-线程状态,volatile关键字...

    跟我学Java-day15-学员管理系统.pdf

    day15-学员管理系统 1.学生管理系统 1.1学生管理系统实现步骤【理解】 案例需求 针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合...

    java初学者学习资料

    Day15:java 的集合类...................................................................................................39 Day16:java 的异常处理...........................................................

    day06-集合1

    哈希值简介是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值如何获取哈希值Object类中的public int hashCode():返回对象的

    day09-ArrayList集合&学生管理系统1

    2.学生管理系统 1. 定义学生类,包含以下成员变量 2. 学生管理系统主界面的搭建步骤 3. 学生管理系统的添加学生功能实现步骤

    java8集合源码分析-NavigationOfMyStarts:星标有点多,为它们做个分类导航方便查找

    java8 集合源码分析 Navigation Of My Starts 星标有点多,为它们做个分类导航方便查找。 Say goodbye to yesterday. Say hello to tomorrow. Remember you can be better. Be yourself and do yourself. Year by ...

    Day04-Java方法(内含值传递的解释!)

    Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法原则:一个方法只完成一个功能,这样利于后期的扩展 方法...

    Day 13 泛型、匿名内部类和集合

    Day 13 1. 泛型 1.1 什么是泛型,为什么引入泛型 目前项目,功能是可以考虑之后的复用的。当前代码值支持Student类,如果需要更换数据类型,智能重新完成对应数据类型的功能键代码。 这里不单单是对于功能模块的...

Global site tag (gtag.js) - Google Analytics