1.Java集合框架包含的内容
Java集合框架为我们提供了一套性能优良,使用方便的接口和类,它们都位于在java.util包中。
Collection 接口存储一组不唯一,无序的对象。
List 接口存储一组不唯一,有序(插入顺序)的对象。
Set 接口存储一组唯一,无序的对象 。
Map接口存储一组键值对象,提供key到value的映射。Map中的key不要求有序,不允许重复。value同样不要求有序,但允许重复。
Iterator接口是负责定义访问和遍历元素的接口。
2.List接口
实现List接口的常用类有ArrayList和LinkedList。它们都可以容纳所有类型的对象,包括null,允许重复,并且都保存元素的存储顺序。
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
LinkedList采用链表(链表没有下标)存储方式。插入、删除元素时效率比较高
1.ArrayList集合类
ArrayList<String> arrayList=new ArrayList<String>();
arrayList.add("美美");
arrayList.add("如花");
arrayList.add("旺财");
//遍历方法
for(int i=;i<arrayList.size();i++){
//get() 通过下标拿到集合中的每一项
System.out.println(arrayList.get(i));
}
2. ArrayList常用的各种方法
方法名 | 说明 |
boolean add(Object o) |
在列表的末尾顺序添加元素,起始索引位从0开始 |
void add(int index,Object o) |
在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间 |
int size() |
返回列表中的元素个数 |
Object get(int index) |
返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换 |
boolean contains(Object o) |
判断列表中是否存在指定元素 |
boolean remove(Object o) |
从列表中删除元素 |
Object remove(int index) |
从列表中删除指定位置元素, 起始索引位置从0开始 |
3.LinkedList集合类
Person person =new Person();
person.setName("哈哈");
person.setAge(); Person person2 =new Person();
person2.setName("吼吼");
person2.setAge(); LinkedList<Person> linkedList=new LinkedList<Person>();
linkedList.add(person);
linkedList.addFrist(person2);
for (int i = ; i < linkedList.size(); i++) {
System.out.println(linkedList.get(i).getName());
}
4.LinkedList的特殊方法
方法名 | 说明 |
void addFirst(Object o) |
在列表的首部添加元素 |
void addLast(Object o) |
在列表的末尾添加元素 |
Object getFirst() |
返回列表中的第一个元素 |
Object getLast() |
返回列表中的最后一个元素 |
Object removeFirst() |
删除并返回列表中的第一个元素 |
Object removeLast() |
删除并返回列表中的最后一个元素 |
3.Map接口
1.HashMap集合类
Map<String,String> map=new HashMap<String, String>();
map.put("CBC", "中国建设银行");
map.put("ABC", "中国农业银行");
map.put("ICBC", "中国工商银行");
Set<String> set=map.keySet();
//方式1. 利用循环 通过key值拿到valus值
for(String key:set){
System.out.println(key);
//get()方法
System.out.println(map.get(key));
}
2.遍历HashMap的五种方式
//方式1. 利用循环 通过key值拿到valus值
for(String key:set){
System.out.println(key);
//get()方法
System.out.println(map.get(key));
}
System.out.println("=============");
//方式2. 利用循环 直接拿到Key
Collection<String> values = map.values();
for(String value:values){
System.out.println(value);
}
System.out.println("====================");
//方式3. 利用循环 直接拿到Key 和Value
Set<Entry<String, String>> entrySet = map.entrySet();
for (Entry<String, String> entry : entrySet) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
//方式4. 使用Itertor迭代器 遍历 Key和value
System.out.println("========Itertor========");
Set<String> keySet = map.keySet();
Iterator<String> iterator = keySet.iterator();
//循环条件 Itertor是否有下一个元素
while (iterator.hasNext()) {
//
String next = iterator.next();
System.out.println(next);
System.out.println(map.get(next));
}
System.out.println("===========5==========");
//方式5. 使用迭代器遍历 Key+Value遍历
Iterator<Entry<String, String>> iterator2 = map.entrySet().iterator();
while(iterator2.hasNext()){
Entry<String, String> next = iterator2.next();
System.out.println(next.getKey());
System.out.println(next.getValue());
}
3.Map的常用方法
方法名 | 说明 |
Object put(Object key, Object val) |
以“键-值对”的方式进行存储 |
Object get (Object key) |
根据键返回相关联的值,如果不存在指定的键,返回null |
Object remove (Object key) |
删除由指定的键映射的“键-值对” |
int size() |
返回元素个数 |
Set keySet () |
返回键的集合 |
Collection values () |
返回值的集合 |
boolean containsKey (Object key) |
如果存在由指定的键映射的“键-值对”,返回true |
总结
别把工作当负担,与其生气埋怨,不如积极快乐的去面对,当你把工作当作生活和艺术,你就会享受到工作的乐趣。
赵昌平 2018年3月13日21:25:10
JavaOOP-集合框架的更多相关文章
-
JAVAOOP集合框架
集合框架三大内容:对外的接口.接口的实现和对集合运算的算法 集合有三大类接口:List.Set.Map 共同点:都是集合接口,都可以用来存储很多对象 不同:Collection接口存储一组不唯一(允许 ...
-
一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
-
【目录】JUC集合框架目录
JUC集合框架的目录整理如下: 1. [JUC]JUC集合框架综述 2. [JUC]JDK1.8源码分析之ConcurrentHashMap(一) 3. [JUC]JDK1.8源码分析之Concurr ...
-
java面试题——集合框架
先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...
-
Java使用实现面向对象编程:第七章集合框架的解读=>;重中之重
对于集合框架,是非常重要的知识,是程序员必须要知道的知识点. 但是我们为什么要引入集合框架呢? 我们之前用过数组存储数据,但是采用数组存储存在了很多的缺陷.而现在我们引用了集合框架,可以完全弥补了数组 ...
-
Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
-
Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
-
Java 之 集合框架(JCF)
1.集合框架 a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的.具有继承或实现关系的类与集合 b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象) ②特点: ...
-
【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
-
【集合框架】JDK1.8源码分析之Comparable &;&; Comparator(九)
一.前言 在Java集合框架里面,各种集合的操作很大程度上都离不开Comparable和Comparator,虽然它们与集合没有显示的关系,但是它们只有在集合里面的时候才能发挥最大的威力.下面是开始我 ...
随机推荐
-
WIN32服务程序(一):创建服务
MSDN中有安装服务的例子Installing a Service(可点击进入),我们这里的创建服务,和MSDN里的例子基本上是一样的.这里做一些简单的说明: 打开控制面板,管理工具,服务.我们看到的 ...
-
ubuntukylin14安装ns-allinone-2.35教程(虚拟机ubuntu同理)
准备材料: 1.ubuntukylin14,百度进官网自行下载: 2.ns-allinone-2.35.tar.gz,百度进官网自行下载: 3.虚拟机:vmwareworkstation(可选). 4 ...
-
【GOF23设计模式】建造者模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]建造者模式详解类图关系 建造飞船 package com.test.Builder; public class AirShi ...
-
jQuery中的height()、innerheight()、outerheight()的区别总结
在前端jQuery代码中突然看到outerheight(),第一感觉就是,这是什么鬼?然后仔细查阅了一下,居然发现还有这么多相似的东西. 在jQuery中,获取元素高度的函数有3个,它们分别是heig ...
-
c语言学习之基础知识点介绍(十三):枚举的介绍和使用
一.枚举的介绍 /* 枚举:限制的待选项. 语法: enum 枚举名{ 选项1, 选项2, 选项3, ........ 选项n }; 注意:枚举中,选项之间用 , 隔开,最后一个不用加 , :并且枚举 ...
-
Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install gcc-arm-linux-gnueabi 前提是你的Ubuntu系统版本是官网支持的最新的版本, ...
-
[国嵌攻略][163][linux-usb软件系统架构]
软件系统架构 1.主机端软件架构 USB设备驱动->USB核心->USB主控制器驱动->USB主控制器 2.设备端软件架构 Gadget驱动->Gadget API->U ...
-
双向链表设计与API实现
为什么需要双向链表? 单链表的结点都只有一个指向下一个结点的指针 单链表的数据元素无法直接访问其前驱元素 逆序访问单链表中的元素是极其耗时的操作! 双向链表的定义 在单链表的结点中增加一个指向其前驱的 ...
-
Best Cow Line---POJ 3617(贪心)
FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competiti ...
-
VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时
之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...