掌握集合类接口的常用方法
掌握集合类接口的实现类
掌握迭代器的创建和使用
一、集合类的概述
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
相关推荐
该文档从简单的Java程序入手,介绍了如何产生随机数,介绍了正则表达式的关键,在实际开发中,我们需要知道正则表达式的规律和格式,切记不可忽略这些小小的细节问题。同时本文还介绍了异常的几种情况,更清晰的认识...
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 day08_File类、...
第一章Unix Day01:UNIX 介绍和基本指令 Day02:UNIX 指令(二)和VI 的使用第二章CoreJava Day01:java 的配置和编译 Day02:进制转换和补码运算 ...Day15:java 的集合类 Day16:java 的异常处理 Day17:Swing 介绍
day07、Java API概述_Scanner 概述和使用_Random使用_ArrayList集合用法。 day08:Java 字符串的基本操作_静态static关键字 day09:Java 类的继承_super和this关键字。 day10:Java 接口。 day11:Java final ...
Day01:java环境与数据类型 Day02:数据运算与数组 Day03:面向对象 Day04:修饰符与类权限 Day05:类与接口 Day06:集合类型 Day07:反射机制与内部类 Day08:异常与Swing图形界面 Day09:swing图形界面与AWT事件...
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
day14-ArrayList集合 1.ArrayList 1.1ArrayList类概述【理解】 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 ArrayList集合的特点 底层是数组实现的,长度可以变化 泛型的使用 ...
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
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
day11-类和对象 1. 类和对象 1.1 类和对象的理解【理解】 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象 类是对象的数据类型,类...
在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...
day05-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类 day06-Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法 day07-异常,线程的创建方式,,线程安全,线程同步 day08-线程状态,volatile关键字...
day15-学员管理系统 1.学生管理系统 1.1学生管理系统实现步骤【理解】 案例需求 针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合...
Day15:java 的集合类...................................................................................................39 Day16:java 的异常处理...........................................................
哈希值简介是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值如何获取哈希值Object类中的public int hashCode():返回对象的
2.学生管理系统 1. 定义学生类,包含以下成员变量 2. 学生管理系统主界面的搭建步骤 3. 学生管理系统的添加学生功能实现步骤
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 ...
Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法原则:一个方法只完成一个功能,这样利于后期的扩展 方法...
Day 13 1. 泛型 1.1 什么是泛型,为什么引入泛型 目前项目,功能是可以考虑之后的复用的。当前代码值支持Student类,如果需要更换数据类型,智能重新完成对应数据类型的功能键代码。 这里不单单是对于功能模块的...