集合类小结

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

相关文章

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

Java基础回顾系列-第六天-Java集合

Java基础回顾系列-第六天-Java集合 集合概述数组的弊端集合框架的优点Java集合关系图集合框架体系图java.util.Collection接口 List集合java.util.List接口java.util.ArrayListjava.util.LinkedListjava.util.Vector Set集合java.util.Set接口java.util.HashSetjava

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

java集合的概述

集合就是一个容器,我们可以把多个对象放入的容器中。就像水杯(假设容量可以不断扩大)一样,你可以往水杯中不断地添加水,既然是水杯,你就不能往里添加沙子,也就是说集合中添加的对象必须是同一个类型的(引用类型,而不能是基本类型)。 看到集合的介绍会让我们的想起数组,那么集合和数组有什么区别呢? 首先,数组的大小是固定的,而集合理论上大小是不限的。 其次,数组既可以存储基本数据类型的数据,也可以存储

hutool 集合相关交集、差集

开发过程中会遇到集合之间的对比之类的需求,之前经常会自己写个工具类来实现,目前hutool可以帮助我们解决很多问题,接下来我们就来实践下。 相关jar包 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>RELEASE</version><scope>compile</sco

Java8中的Stream,让集合操作酸爽起来

简介 java8也出来好久了,接口默认方法,lambda表达式,函数式接口,Date API等特性还是有必要去了解一下。比如在项目中经常用到集合,遍历集合可以试下lambda表达式,经常还要对集合进行过滤和排序,Stream就派上用场了。用习惯了,不得不说真的很好用。 Stream作为java8的新特性,基于lambda表达式,是对集合对象功能的增强,它专注于对集合对象进行各种高效、便利的聚合

Linux环境配置中问题小结

在Linux环境配置中,遇到问题首先猜测: 1、是否是权限问题; 2、软连接是否配置;

算法练习小技巧之有序集合--套路详细解析带例题(leetcode)

前言:         本文详细讲解Python中的有序集合SortedList和C++中的有序集合multiset的用法,配合leetcode的例题来展示实际的用处。(本人水平不够,还无法讲解有序集合的实现方法,只会用)         觉得有帮助或者写的不错可以点个赞,后面也有几道我找出来的题目可以用这个方法快速解决的         (感觉有点水) 目录 有序集合用法讲解:

Java中集合类Set、List和Map的区别

Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。那么它们有什么区别呢? Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对