集合类小结

2024-09-03 05:38
文章标签 小结 集合

本文主要是介绍集合类小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

容器——保存对象
1.Collection接口

一个独立元素序列,这些元素都服从一条或多条规则.List必须按照插入顺序保存元素,而Set不能有重复元素.Queue按照排队规则来确定对象产生的顺序(通常与它们插入的顺序相同).

2.Map接口

一组成对的"键值对"对象,允许你使用键来查找值.映射表允许我们使用另一个对象来查找某个对象,它也被称为关联数组,因为它将某些对象与另外一些对象关联在了一起;或者被称为"字典",因为你可以使用键对象来查找值对象,就像你在字典中使用单词来定义一样。Map是强大的编程工具.

一般情况下,我们应该创建一个具体的对象,将其转型为对应的接口,然后在其余的代码都使用这个接口.
如:List<Apple> apples=new ArrayList<Apple>();

但是当我们需要某些具有特殊功能的类时,就不能将它们向上转型为更通用的接口.

 

一.迭代器:
1.Iterator

public interface Iterator<E>
{
    E next();
    boolean hasNext();
    void remove();

}
Java的Iterator只能单向移动,这个Interator只能用来:
1).使用方法iterator()要求容器返回一个Iterator。Iterator将准备好的返回序列的第一个元素.
2).使用next()获得序列中的下一个元素.
3).使用hasNext()检查序列中是否还有元素.
4).使用remove()将迭代器新返回的元素删除.

注意:查找一个元素的唯一方法是调用next,而在执行查找操作的同时,迭代器的位置随之向前移动,Java迭代器是位于两个元素之间,调用next时,迭代器就越过下一个元素,并返回刚刚越过的那个元素的引用.因此在删除元素的时候,也就是使用remove()方法时,要首先调用next越过这个元素。


2.ListIterator
它是一个更加强大的Iterator的子类型,它只能用于各种List类的访问.尽管Iterator只能向前移动,但是ListIterator可以双向移动.它还可以产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引,并且可以使用set()方法替换它访问过的最后一个元素。

 

二.详细介绍
List(列表):集合中的对象按照索引位置排序,可以有重复的对象,允许按照对象在集合中的索引位置检索对象。List与数组有些相似。 ------有序,可重复
--ArrayList 
--LinkedList  非线程安全的
--Vector      线程安全,所有方法都是同步的.在同步操作上耗费大量时间.

注意:链表不支持快速地随机访问,如果要查看链表中的第n个元素,就必须从头开始,越过n-1个元素,没有捷径可走,鉴于这个原因,在程序中需要采用整数索引访问元素时,程序员通常不选用链表.在指定位置处插入元素时,链表却能发挥它的优势.使用链表的唯一理由是尽可能减少在列表中插入或删除元素所付出的代价.


Set(集合):集合中的对象不按照特定的方式排序,并且没有重复对象。 ------无序,不可重复
--HashSet类按照哈希算法来存取集合中的对象,存取速度比较快
--TreeSet类实现了SortedSet接口,具有排序功能

 

Map(映射):集合中的每一个元素包含一对 键对象、值对象,集合中没有重复的键对象,值对象可以重复。-------键不可,值可重复
--HashMap按照哈希算法来存取键对象,有很好的存取能力。
--TreeMap实现了SortedMap接口,能对键对象进行排序,和TreeSet一样,TreeMap也支持自然排序和客户化排序两种方式.默认情况下,树集假设它插入的元素实现了Comparable接口。
Map的输出方式

Set<Map.Entry<String,String>> set = map.entrySet();Iterator<Map.Entry<String,String>> it = set.iterator();while(it.hasNext()){Map.Entry<String, String> entry = it.next();System.out.println(entry.getKey()+"  "+entry.getValue());}

 

当在一个集合中要按两种方法排序,或者要对一个类的对象进行排序,而这个类的创建者又没有费心实现Conparable接口,那么我们可以将Comparator对象传递到TreeSet构造器来告诉树集使用不同的比较方法.

 创建一个Student类,有姓名,性别,分数等属性,按分数值排序

import java.util.Comparator;
public class Compare implements Comparator<Student>{@Overridepublic int compare(Student student1,Student student2) {if(student1.getScore()>student2.getScore())return 1;else if(student1.getScore()<student2.getScore())return -1;else return 0;}}public class TreeSetTest {private static Compare com=new Compare();public static void main(String[] args) {SortedSet<Student> ss=new TreeSet<Student>(com);Student[] s1=new Student[5];for(int i=0;i<5;i++){s1[i]=new Student("student"+i, "软工"+i,(int)(Math.random()*100));ss.add(s1[i]);}System.out.println(ss);}}


 

这篇关于集合类小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132174

相关文章

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、