java集合类总结


Collection:单列集合类的跟接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别时List和Set还有Queue。其中List的特点时元素有序,元素可重复,Set的特点时元素无序且不可重复,Queue与List性质一样,不同之处时Queue是先进先出。

Map:键值对存储,每个值对应一个键,是一种映射关系,在Map集合中可以通过键值Key找到对应的值Value

List接口

方法声明

功能描述

Void add(int  index,Object element)

将元素element元素插入在List集合的index处

Boolean addAll(int index,Collection c)

将集合c所包含的所有元素插入到List集合的index处的元素

Object get(int index)

返回集合索引index处的元素

Object remove(int index)

删除index索引处的元素

Object set(int index,Object element)

将索引index处元素替换成element对象,并将替换后的元素返回

Int indexOf(Object o)

返回对象o在List集合中出现的位置索引

Int lastIndexOf(Object o)

返回对象o在List集合中最后一次出现的位置索引

List subList(int fromIndex,int toIndex)

返回从索引fromIndex(包括)到toIndex(不包括)处所有元素集合组成的子集合

 

ArrayList集合

 

ArrayList常见功能

添加
public boolean add(E e)
public void add(int index,E element) // 在指定的索引位置添加元素 

获取元素
public E get(int index)// 根据索引值获取元素


获取元素个数
public int size() //获取元素个数

删除元素
public boolean remove(Object o) // 直接删除元素 
public E remove(int index) //根据索引删除元素 ,并把删除的元素返回 

修改元素
public E set(int index,E element)// 使用element 去替换指定索引的元素 , 并返回被替换的元素

package com.ajax;import java.util.ArrayList;public class Example10 {public static void main(String[] args){ArrayList list1=new ArrayList();list1.add("1");list1.add("2");list1.add("3");list1.add("4");list1.add("5");for(Object obj:list1){System.out.println(obj);}}
}

LInkedList集合

查询快,增删慢

package com.ajax;import java.util.ArrayList;
import java.util.LinkedList;public class Example10 {public static void main(String[] args){LinkedList link=new LinkedList();link.add("1");link.add("2");link.add("3");link.add("4");link.add("5");System.out.println(link.toString());Object st= link.getFirst();System.out.println(st);}
}

 

 

 

Iterator接口

 

Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。

  Iterator接口里定义了如下4个方法:

    –booleanhasNext():如果被迭代的集合还元素没有被遍历,则返回true。

    –Objectnext():返回集合里下一个元素。

    –voidremove() :删除集合里上一次next方法返回的元素

    –voidforEachRemaining(Consumer action),这是Java 8为Iterator新增的默认方法,该方法可使用Lambda表达式来遍历集合元素。

package com.ajax;
import java.util.ArrayList;
importjava.util.Iterator;
importjava.util.LinkedList;public classExample10 {public static void main(String[] args){LinkedList link=newLinkedList();link.add("1");link.add("2");link.add("3");link.add("4");link.add("5");Iterator it = link.iterator();while(it.hasNext()){System.out.println(it.next());}}
}


 

 

Foreach循环

 

for(容器中元素类型 临时变量:容器变量)

package com.ajax;importjava.util.ArrayList;public classExample10 {public static void main(String[] args){ArrayList list1=newArrayList();list1.add("1");list1.add("2");list1.add("3");list1.add("4");list1.add("5");for(Object obj:list1){System.out.println(obj);}}
}


 

 

ListIterator接口

 

为了迭代方式的多元化,在父类的基础上郑家了一下特有的方法

方法声明        功能描述

void add(Object o)  插入

ObjecthasPrevious()       判断对象是否有上个元素

void remove() 删除next或者previous返回的最后一个元素

package com.ajax;

 

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;public classExample10 {public static void main(String[] args){ArrayList link=newArrayList();link.add("1");link.add("2");link.add("3");link.add("4");link.add("5");ListIterator it=link.listIterator(link.size());while(it.hasPrevious()){System.out.println(it.previous());}}
}


 

//本例表示以集合的最后一个元素开始迭代

 

Enumeration接口

 

遍历Vector集合,Vector集合是线程安全的,而ArrayList集合是线程不安全的。

package com.ajax;

 

importjava.util.ArrayList;

importjava.util.Enumeration;

importjava.util.Iterator;

importjava.util.LinkedList;

importjava.util.ListIterator;

importjava.util.Vector;

 

public classExample10 {

         public static void main(String[] args){

                  Vector link=new Vector();

                  link.add("1");

                  link.add("2");

                  link.add("3");

                  link.add("4");

                  link.add("5");

                  Enumeration it=link.elements();

                  while(it.hasMoreElements()){

                          System.out.println(it.nextElement());

                  }

                  }

}

 

 

 

Set接口

 

Set接口和List接口一样,同样继承Collection接口,并没有对接口进行功能上的补充,只是比该接口更加严格了,Set无序没有重复

HashSet集合

 

当该集合添加一个对象时,首先会调用对象的hashCode()方法来确定与元素的存储位置,然后再调用对象的equals()方法来确保该位置没有出现重复元素,可以理解为像数据结构中的哈希散列表

package com.ajax;

 

importjava.util.ArrayList;

importjava.util.Enumeration;

importjava.util.HashSet;

importjava.util.Iterator;

importjava.util.LinkedList;

importjava.util.ListIterator;

importjava.util.Vector;

 

public classExample10 {

         public static void main(String[] args){

                  HashSet link=new HashSet();

                  link.add("1");

                  link.add("2");

                  link.add("3");

                  link.add("4");

                  link.add("1");

                  Iterator it=link.iterator();

                  while(it.hasNext()){

                          System.out.println(it.next());

                  }

                  }

}

 

 

//结果

3 2 1 5 4

没有出现重复值,之所以出现的顺序时无序因为此处的哈希散列表是根据对象的地址来存储的,地址越靠前优先输出

TreeSet集合

 

原理是自平衡的排序二叉树,特点是存储的元素会按照大小排序,并能去重(平衡二叉树的左孩子必须小于根节点,右孩子大于根节点的值,当出现重复的元素时不做处理,树的结构不会放生变化,因为节点中已经出现该值)。

package com.ajax;

 

importjava.util.ArrayList;

importjava.util.Enumeration;

importjava.util.HashSet;

importjava.util.Iterator;

importjava.util.LinkedList;

importjava.util.ListIterator;

importjava.util.TreeSet;

importjava.util.Vector;

 

public classExample10 {

         public static void main(String[] args){

                  TreeSet link=new TreeSet();

                  link.add("1");

                  link.add("2");

                  link.add("3");

                  link.add("4");

                  link.add("1");

                  Iterator it=link.iterator();

                  while(it.hasNext()){

                          System.out.println(it.next());

                  }

                  }

}

 

 

//结果:1234 根据平衡二叉树的原理,中序遍历的结果得出1234

Map接口

 

 

Map接口利用键值对的方式保存数据,其实现原理就是红黑树,红黑树是二叉查找树,如果读者想具体了解红黑树可以参考:http://blog.csdn.net/eric491179912/article/details/6179908写的很详细

常用的方法

方法声明                    功能描述

void put(Objectkey,Object calue) 将指定的值与此映射的值相关联(可选操作)

Object get(Objectkey)   通过key返回值,没有返回null

boolean containsKey(ObjectKey) 如果有映射关系返回true

booleancontainsValue(Object  value)         同上

 

HashMap集合

 

package com.ajax;

 

importjava.util.*;

 

public classExample10 {

         public static void main(String[] args){

                  Map link=new HashMap();

                  link.put(1, 'a');

                  link.put(3, 'c');

                  link.put(2, 'b');

                  link.put(5, 'd');

                  link.put(4, 'd');

                  link.put(4, 'e');

                  link.put(4, 'f');

                  Set keySet=link.keySet();//获取键的集合

                  Iterator it=keySet.iterator();

                  while(it.hasNext()){

                          Object key=it.next();

                          System.out.println("key:"+key+"value:"+link.get(key));

                  }

         }

}

 

 

//结果:

key:1value:a

key:2value:b

key:3value:c

key:4value:f

key:5value:d

通过测试可以发现,当键相同的元素存入map集合中的时候,每次保存的值都会发生改变直到最后一个存储的值为止

TreeMap集合

 

自平衡二叉树排序

package com.ajax;

 

importjava.util.*;

 

public classExample10 {

         public static void main(String[] args){

                  Map link=new TreeMap();

                  link.put(1, 'a');

                  link.put(4, 'd');

                  link.put(2, 'b');

                  link.put(5, 'd');

                  link.put(3, 'c');

                  Set keySet=link.keySet();//获取键的集合

                  Iterator it=keySet.iterator();

                  while(it.hasNext()){

                          Object key=it.next();

                          System.out.println("key:"+key+"value:"+link.get(key));

                  }

         }

}

 

 

 

Properties集合

 

map接口还有一个实现类Hashtable,它和HashMap十分相似,区别在于Hashstable是线程安全(线程安全不理解的参考:https://zhidao.baidu.com/question/168637634.html)的。

Hashtable存取元素的速度很慢目前基本被HashMap取代,但Hashtable有一个子类Properties主要用来存储字符串类型的键值对,开发中经常存取应用的配置项。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP为什么是四次挥手

TCP 3次握手 客户端向服务器发送一个SYN(包含了SYN,SEQ)。 当服务器接收到客户端发过来的SYN时,会向客户端发送一个SYNACK的数据包,其实ACK的ack等于上一次发送SYN数据包的(SYNSEQ)。 当客户…

TCP的三次握手和四次挥手详解

为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。…

zabbix server is not running the information displayed may not be current

页面报错如下 查看日志提示 30037:20190710:193016.878 cannot start alert manager service: Cannot bind socket to "/var/run/zabbix/zabbix_server_alerter.sock": [13] Permission denied.30039:20190710:193016.879 server #30 started [preprocessing manage…

VS2010项目配置详解

首先看一下项目设置中可以使用的宏(环境变量),常用的有: ConfigurationName 配置名字,通常是Debug或者Release IntDir 编译器使用的中间目录,产出obj文件 OutDir 链接器使用的输出目录 ProjectDir 项目目录…

Centos7 下 zabbix服务安装与部署,linux监控服务

客户端安装参考:https://mp.csdn.net/postedit/95475740 安装Zabbix 关闭 SeLinux 临时关闭 setenforce 0 永久关闭 vi /etc/selinux/config 关闭防火墙 临时关闭 systemctl stop firewalld.service 永久关闭 systemctl disable firewalld.service安装基础环…

Zabbix 安装agent

服务端安装参考:https://datamining.blog.csdn.net/article/details/95362947 安装前首先添加对应的yum repository rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm yum install -y zabbix-agent 修改配置文件 …

Bootstrap 导入js文件,浏览器找不到文件问题

html导入文件是用href属性来导入,js利用src属性导入,都可以用相对路径来导入文件,只要确保相对路径正确不会找不到。 绝对路径:是从盘符开始的路径,形如C:\windo绝对路径:是从盘符开始的路径,形…

windows 安装 zabbix agent 客户端

下载window客户端 https://assets.zabbix.com/downloads/3.4.0/zabbix_agents_3.4.0.win.zip 在C盘建立目录 C:/zabbix ,并解压下载文件 修改配置参数 LogFilec:\zabbix\zabbix.log Server服务端ip ServerActive服务端ip Hostnameinstance-2c7t7v(右…

Spark-shell 脚本批量执行命令,命令行批量执行命令

spark-shell 执行脚本&#xff0c;批量执行命令 #!/bin/bashsource /etc/profileexec spark-shell --name spark-sql-test --executor-cores 8 --executor-memory 8g --num-executors 1 --conf spark.cleaner.ttl240000 <<!EOF var startTime System.currentTimeM…

TCP滑动窗口机制

TCP通过滑动窗口机制检测丢包&#xff0c;并在丢包发生时调整数据传输速率。滑动窗口机制利用数据接收端的接收窗口来控制数据流。 接收窗口值由数据接收端指定&#xff0c;以字节数形式存储于TCP报文头&#xff0c;并告知传输设备有多少数据将会存储在TCP缓冲区。缓冲区就是数…

CDH中文文档下载,Cloudera中文手册,CM中文文档

CDH中文文档下载 链接&#xff1a;https://pan.baidu.com/s/1G-8WCafpPZ3p7ZDeXLcgug 提取码&#xff1a;ubxz

运行第一个node.js文件

安装node.js 链接:https://nodejs.org/en/ 选择downloads 再选择对应的版本&#xff0c;Windows Installer (.msi)&#xff1a;表示需要安装后才能运行node.js文件,安装完后在(cmd)控制台输入node -v查看版本&#xff0c;不用配置环境安装完成后自动配置。Windows Binary (.zip…

phoenix-sqlline 连接失败

报错如下 [rootxxx bin]# phoenix-sqlline.py xxx.xxx.xxx:2181:/hbase Traceback (most recent call last):File "/opt/cloudera/parcels/APACHE_PHOENIX-4.14.0-cdh5.13.2.p0.3/bin/../lib/phoenix/bin/sqlline.py", line 25, in <module>import phoenix_ut…

几个重要库函数的实现

面试官很喜欢让求职者写一些常用库函数的实现&#xff0c;有很多是和字符串相关的&#xff0c;有一些是关于内存拷贝的。一般&#xff0c;常会让写的函数有以下几个&#xff1a; strcpy &#xff0c; strncpy&#xff0c; memcpy。 memset一般不会让去写&#xff0c;但这个函数…

CDH 5.13.0 集成 Phoenix

1.下载Phoenix http://phoenix.apache.org/download.html 找到对应版本 点击parcels (cdh可安装版本) http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.13.2/parcels/ 下载好这三个文件 -rw-r--r-- 1 root root 364830720 7月 26 16:15 APACHE_PHOENIX-…

Phoenix 关联hbase表历史数据

Phoenix 基本使用 进入Phoenix phoenix-sqlline.py 10.248.161.18:2181:/hbase 或者进入目录下执行 cd /opt/cloudera/parcels/APACHE_PHOENIX/bin 关联Hbase原有表 创建Hbase表&#xff0c;列簇为 cf1 , cf2 create phoenix_hbase_test,cf1,cf2 插入测试数据 put phoenix…

Phoenix 关联映射 Hbase表 获取不到数据,upsert hbase 列名为16进制字符

创建Hbase表 create phoenix_hbase_test,cf1,cf2 put phoenix_hbase_test, key1,cf1:name,zhangsan put phoenix_hbase_test, key1,cf2:age,18 put phoenix_hbase_test, key2,cf1:name,lisi put phoenix_hbase_test, key2,cf2:age,26 put phoenix_hbase_test, key3,cf1:name,c…

node.js模块和包

概念&#xff1a;模块(Module)和包(Package)是Node.js最重要的支柱。开发一个具有一定规模的程序不可能只用一个文件&#xff0c;通常需要把各个功能拆分、分装、然后组合起来。模块正式为了实现这种方式而诞生&#xff0c;在浏览器JavaScript中&#xff0c;脚本模块的拆分和组…

Ensure that config phoenix.schema.isNamespaceMappingEnabled is consistent on client and server

Phoenix链接异常&#xff0c;报错如下 0: jdbc:phoenix:xxx:2181:/hbase> Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Ensure that config phoenix.schema.isNamespaceMappingEnabled is consistent on client and server. (state43M10,code7…

Phoenix 关联查询异常 , MaxServerCacheSizeExceededException phoenix.query.maxServerCacheBytes

参数配置说明&#xff1a;http://phoenix.apache.org/tuning.html Join&#xff1a;http://phoenix.apache.org/joins.html 从设计角度来讲&#xff0c;尽可能的不使用phoenix进行关联查询&#xff0c;速度比直接根据条件查询慢很多很多 测试关联&#xff0c;异常如下 Error:…