掌握集合类接口的常用方法
掌握集合类接口的实现类
掌握迭代器的创建和使用
一、集合类的概述
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程序入手,介绍了如何产生随机数,介绍了正则表达式的关键,在实际开发中,我们需要知道正则表达式的规律和格式,切记不可忽略这些小小的细节问题。同时本文还介绍了异常的几种情况,更清晰的认识...
6. **集合框架**:Java集合框架如ArrayList、LinkedList、HashMap等,会在处理数据时频繁用到,比如存储查询结果或临时数据。 7. **文件操作**:可能涉及到读写配置文件或日志文件,需要掌握File和IO流的相关知识。...
【Java基础源代码day03】是传智播客Java培训课程中毕向东老师讲解的一天教学内容,主要涵盖了Java编程语言的基础知识点。在这一天的学习中,学生将深入理解Java的核心概念,为后续的Java开发打下坚实的基础。以下是...
10. 集合框架(Collections Framework):Java集合框架提供了一组接口和实现这些接口的类,如ArrayList、LinkedList、HashSet、HashMap等,它们方便地存储和操作对象。 "day12_code"可能包含了以上概念的示例代码,...
"day13_java_源码"中的例子可能包含了如何创建和使用抽象类和接口的实例。假设我们有一个抽象类`AbstractExample`和一个接口`InterfaceExample`: ```java abstract class AbstractExample { abstract void ...
5. **集合**(传智播客_Java培训_毕向东_Java基础[06-集合].pdf):Java集合框架是处理对象集合的重要工具,包括List、Set、Queue、Map等接口及其实现类,如ArrayList、LinkedList、HashMap等,以及它们的使用场景和...
在本资源"传智播客_Java培训_毕向东_Java基础源代码_day02"中,我们聚焦于Java编程语言的基础学习,由知名讲师毕向东指导。这个压缩包包含了day02的学习材料,主要是源代码,是为初学者精心准备的实践教程。 Java是...
7. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类的使用。 8. **多线程**:学习如何创建和管理线程,理解同步和互斥的概念,以及如何避免线程...
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 day08_File类、...
创建一个新的Java工程,可以通过菜单栏的File -> New -> Java Project,然后输入工程名称,比如按照学习进度命名(例如day01)。 **Eclipse使用技巧:** 1. **创建Java工程**:通过File -> New -> Java Project,...
Java集合框架是Java编程语言中用于存储和操作对象集合的一组接口和类。在Java中,集合通常分为三大类:List、Set和Map。本知识点主要关注于Map接口的介绍和几种Map实现类的详解。 首先,Map是一个键值对集合,其中...
ArrayList、LinkedList、HashSet、HashMap等是常用的集合类,它们各自有不同的性能特点和适用场景。理解这些集合的内部实现和操作效率,可以帮助我们写出更高效、更灵活的代码。 最后,如果课程涵盖了设计模式,...
ArrayList是Java集合框架中的一个接口实现类,基于动态数组实现,提供了按索引访问元素的高效性能。你可以通过增删改查(Add、Remove、Set、Get)等基本操作来管理ArrayList中的元素。在day20的代码中,可能会包含...
4. **数组**:Java中的数组是一组相同类型的元素集合,可以使用索引来访问每个元素。数组的创建、初始化和遍历是学习的重点,理解数组的概念对于处理批量数据至关重要。 5. **方法(Method)**:方法是Java中封装...
BlueJ提供了一个互动的平台,通过它可以创建、测试和修改Java类,帮助学习者逐步理解面向对象编程的基本概念。 Java编程语言的关键知识点包括: 1. **基本语法**:包括变量声明、数据类型、运算符、流程控制语句...
day07、Java API概述_Scanner 概述和使用_Random使用_ArrayList集合用法。 day08:Java 字符串的基本操作_静态static关键字 day09:Java 类的继承_super和this关键字。 day10:Java 接口。 day11:Java final ...
这个名为"day07-code_java基础_"的压缩包文件显然包含了一系列针对初学者的Java基础教程,其中可能涵盖了从基本语法到核心概念的各种主题。下面我们将详细探讨Java基础的一些关键知识点。 首先,Java的基础部分通常...
【Java_day16上课资料.zip】是一个包含Java编程学习资源的压缩文件,主要针对已经学习了前15天课程的学生,旨在进一步深化对Java语言的理解。这个资料包可能包括课件、代码示例、练习题及解答等,帮助学生巩固和扩展...
8. **集合框架**:包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等具体实现类的使用。 9. **IO流**:学习如何进行文件读写,以及标准输入输出流的使用。 10. **多线程**:理解线程的概念...
Day01:java环境与数据类型 Day02:数据运算与数组 Day03:面向对象 Day04:修饰符与类权限 Day05:类与接口 Day06:集合类型 Day07:反射机制与内部类 Day08:异常与Swing图形界面 Day09:swing图形界面与AWT事件...