List:线性有序的,其中的元素可以重复,添加新的元素是添加到队列的末尾
ArrayList以队列方式存储,在进行大量数据的遍历操作时效率比较高
而LinkedLis是链表方式存储,在进行指定数据的随机访问时效率要高一些
/**
* 用于测试List的类
* @author mytream
*
*/
public class TestList {
/**
* 程序的入口
* @param args 从控制台接受的字符参数
*/
public static void main(String[] args) {
//定义一个List<Student>变量
List<Student> list;
//创建一个具有若干元素的List<Student>对象
list = getStudents();
//遍历1
//取得list的迭代器
Iterator<Student> it = list.iterator();
//遍历list中的Student元素并打印出他们的信息
Student s;
while(it.hasNext()) {
s = it.next();
s.showInfo();
}
//遍历2(遍历1的简单写法)
for(Student s:list) {
s.showInfo();
}
//遍历3
for(int i=0;i<list.size();i++) {
list.get(i).showInfo();
}
}
/**
* 创建一个List<Student>对象
* @return List<Student>对象
*/
private static List<Student> getStudents() {
//定义一个List<Student>变量
List<Student> list = new ArrayList<Student>();
//通过一个循环向list中加入若干Student对象
Student s;
for(int i=0;i<4;i++) {
s = new Student("学生"+(char)(65+i),19+i);
list.add(s);
}
//返回list
return list;
}
}
Set:非线性无序的,元素不允许重复,重复的元素无法添加到set中
Set不保证元素的有序存储,但并不一定就是无序的
/**
* Set的测试类
* @author mytream
*
*/
public class TestSet {
/**
* 程序的入口
* @param args
*/
public static void main(String[] args) {
//创建Set<Student>对象
Set<Student> set;
//向set中加入一组Student对象
set = getStudents();
//获取set的迭代器
Iterator<Student> it = set.iterator();
//遍历set中的Student对象,并打印出姓名
Student s;
while(it.hasNext()) {
s = it.next();
s.showInfo();
}
}
/**
* 获取一组学生的信息
* @return
*/
private static Set<Student> getStudents() {
//定义一个Set对象
Set<Student> s = new HashSet<Student>();
//通过一个循环想set中加入若干Student对象
Student student;
for(int i=0;i<4;i++){
student = new Student("学生"+(char)(65+i),18+i);
s.add(student);
}
//返回此set
return s;
}
}
Map:其中的元素是由一个个键值对(K-->V)组成的.因为键的的保存是无序的因此映射(Map)中的键值对存储是无序的。
映射中所有的键(K)组成一个set对象。添加新的映射时,如果键(Key)与映射中的某个键相等而值(Value)不相等。
则用新映射中的Value替代已存在映射的Value
/**
* Map的测试类
* @author mytream
*
*/
public class TestMap {
/**
* 程序的入口
* @param args 从控制台接收的字符信息
*/
public static void main(String[] args) {
//定义一个 Map<Integer,Student>变量
Map<Integer,Student> map;
//创建map对象
map = createMap();
//测试Map的clear()方法
//map.clear();
//用Map的entrySet()方法测试
/*Set<Map.Entry<Integer,Student>> set = map.entrySet();
Iterator<Map.Entry<Integer,Student>> it = set.iterator();
while(it.hasNext()) {
Map.Entry<Integer,Student> entry = it.next();
entry.getValue().showInfo();
}*/
//用Map的keySet()测试
/*Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
while(it.hasNext()) {
Integer in = it.next();
map.get(in).showInfo();
}*/
//用Map的values()方法测试
Collection<Student> students = (Collection<Student>)map.values();//values()返回的是Collecion视图
for(Student s:students) {
s.showInfo();
}
}
/**
* 创建一个 若干元素的Map<Integer,Student>对象
* @return Map<Integer,Student>对象
*/
private static Map<Integer,Student> createMap() {
//定义创建一个Map<Integer,Student>对象
Map<Integer,Student> map = new HashMap<Integer,Student>();
//向map中 加入若干元素
Student s;
for(int i = 0;i < 4;i++) {
s = new Student("学生"+(char)(65+i),17+i);
map.put(i, s);//i会自动转型
}
//返回map
return map;
}
}[align=left][/align]
分享到:
相关推荐
使用场景及目标:① 理解集合框架的内部实现和性能特征,优化数据管理和应用性能;② 学习如何在Android开发中有效使用集合框架管理资源和处理事件;③ 掌握泛型和并发集合类的应用,提高代码的安全性和可读性。 ...
本文将深入探讨三种主要的集合类型:List、Set和Map,以及它们的子类和底层实现,同时阐述它们的特点、优缺点以及如何在实际编程中应用。 一、集合家族图谱 集合框架主要分为两大类:Collection和Map。Collection...
Java集合框架是Java编程语言中用于存储和...本知识点通过介绍Java中Map接口及其常见实现类,详细阐述了Map的核心概念、操作方法和不同实现类的特性和应用场景,对于Java集合框架的学习者来说,是不可或缺的基础知识。
`内部类`文件可能详细阐述了内部类的使用场景、优缺点以及如何创建和使用它们。通过学习,你将能够熟练地运用内部类来增强代码的可读性、灵活性和复用性。 总之,这个资料包涵盖了Java集合框架和内部类的基础知识,...
本文深入介绍了Java集合框架的重要组成部分及其相关接口与实现类,覆盖了主要集合类型(List、Set、Map等)的特点及基本使用方法,并对比了不同集合类间的优劣及适用场景。此外,本文还探讨了集合框架的高级特性(如...
Java 集合容器是 Java 语言中的一种数据结构,用于存储和操作数据。集合容器框架是 Java 中的一个重要组件,提供了一种统一的标准来存储和操作数据。下面是关于 Java 集合容器的知识点: 集合容器概述 集合容器是...
本文主要围绕Java集合框架的核心概念、接口和类进行阐述。 首先,集合框架是Java中用于存储和管理对象的统一框架,它通过一系列接口和类来实现。核心接口包括Collection、Set、List以及Map。Collection接口是所有...
Java 集合容器包括三大块内容:对外的接口、接口的实现和对集合运算的算法。接口是抽象数据类型,允许我们操作集合时不必关注具体实现,从而达到“多态”。实现是集合接口的具体实现,是重用性很高的数据结构。算法...
本教程的"Oracle高级教程-深入学习集合"将详细阐述以上各个主题,并提供丰富的示例和练习,帮助读者熟练掌握Oracle集合的使用,进一步提升数据库管理与开发的专业水平。通过阅读并实践,你将能够更好地应对复杂的...
在教学中,教师需要先回顾数据结构课程的基础内容,如数据的组织和存储方式、线性结构与非线性结构的区别,以及线性表、顺序表和链表的概念和特点。线性结构可以进一步细分为线性表、队列和栈,而线性表又可以细分为...
【集合类型优化1】这本书主要探讨的是如何在Swift编程语言中高效地实现和优化集合类型,包括数组(array)、集合(set)和字典(dictionary)。作者Károly Lőrentey通过深入讲解各种算法和数据结构,分享了如何...
根据给定的信息,本文将详细解释C#中的正则表达式及其应用场景,特别是结合所提供的示例来阐述如何在C#程序设计中运用这些表达式。 ### C#与正则表达式 C#是一种广泛使用的面向对象编程语言,它支持丰富的功能,...
下面将详细阐述这些工具的重要性和使用场景。 1. **时间转换工具**: 时间转换工具在处理跨时区问题或系统时间同步时非常有用。这类工具通常允许用户在不同的时间格式和时区之间进行转换,对于经常处理国际数据...
- **Map接口**:HashMap、TreeMap、LinkedHashMap的区别和使用场景。 - **泛型**:如何使用泛型来限制集合元素类型,避免类型转换错误。 5. **多线程** - **线程的创建**:通过Thread类或实现Runnable接口创建...
了解它们的特点和应用场景,如List的有序性和可重复性,Set的唯一性,Map的键值对存储,是进阶Java编程的基础。 4. **线程**:Java提供内置支持进行多线程编程,通过`Thread`类或实现`Runnable`接口来创建线程。...
3. 介绍并发集合类,如ConcurrentHashMap和CopyOnWriteArrayList的使用场景。 4. 讨论Set和List的区别,以及它们各自的实现类特点。 三、J2EE核心概念 1. 描述Servlet和JSP的基本工作流程,以及它们在Web应用中的...
本文将深入探讨标题“集合代码需要时下载,留作参考.7z”中提到的几种核心集合类:HashMap、HashSet、LinkedList、ArrayList、Stack以及Vector,并通过它们的描述来阐述各自的特点和应用场景。 首先,我们来看...
Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合,这些数据结构使得Redis在处理复杂业务场景时表现出色。同时,Redis还提供发布订阅模式,可以用于构建实时的消息传递系统。 接下来是角色菜单处理,...