java中List、Map、Set、Stack、Queue、Collections等的使用
java中List、Map、Set、Stack、Queue、Collections等的使用
List
创建方法: List<String> list=new ArrayList<>();
add(val) : 添加元素。
get(index) : 获取元素。
remove(index) : 删除元素。
remove(Object o) : 按照元素内容删除 {eg:list.add("marry") ; list.remove(0)==list.remove("merry");}。
contains(Object o) : 返回true/false 表示是否包含摸个元素。
set(index,element) : 将下标为index的元素替换为element。
add(index,element) : 将element插入到第index位置,然后将后面元素后移一位。
indexOf(Object o) :返回元素的第一个位置
lastIndexOf(Object o) :返回元素的最后一个位置
subList(fromindex,toindex) :生成一个新的List{eg:phone=phone.subList(1, 4);利用索引1-4的对象重新生成一个list,但是不包含索引为4的元素,4-1=3 }
size() :返回List的长度。
equals(List list) :判断两个list中的元素是否相同。
isEmpty() :判断List是否为空。
iterator() :返回Iterator对象{eg:Iterator iterator = list.iterator(); iterator.next() :获取下一个元素 }
toString() : 将集合转换为字符串,并返回转化后的字符串。
toArray() : 将集合转换为数组,并返回转化后的数组。
类型转换 :List<StringBuffer> lst=new ArrayList<>();
for(String string:person){ lst.add(StringBuffer(string));
去重 :
List<String> lst1=new ArrayList<>();
List<String> lst2=new ArrayList<>();
for (String s:lst1)
{
if (Collections.frequency(lst2, s)<1)
{
lst2.add(s);
}
}
Map
put(key,value) :向map集合中添加Key为key,Value为value的元素,当添加成功时返回null,否则返回value。
就是说Map集合中的Key是不能重复的,这就类似于Set集合中元素不能重复,但是Map集合中的Value是可以重复。
putAll(Map m) :向map集合中添加指定集合的所有元素 {eg: map1.putAll(map2);}
clear() : 把map集合中所有的键值删除 .
containsKey(Object key) :检出map集合中有没有包含Key为key的元素,如果有则返回true,否则返回false。
containsValue(Object value) : 检出map集合中有没有包含Value为value的元素,如果有则返回true,否则返回false。
entrySet() :返回map到一个Set集合中,以map集合中的"Key=Value"的形式返回到set中。 {eg: Set set = map.entrySet(); }
equals(Object o) :判断两个Map是否相等
get(Object key) : 根据map集合中元素的Key来获取相应元素的Value .
int hashCode(): 返回map集合的哈希码值 {eg: hashcode = map1.hashCode();}
isEmpty() : 检出map集合中是否有元素,如果没有则返回true,如果有元素则返回false .
keySet() : 返回map集合中所有Key .{eg: Set set = map.keySet() ;}
remove(Object key) : 删除Key为key值的元素 .
size() :返回map集合中的元素个数
values() :返回map集合中所有的Value到一个Collection集合 {eg:Collections col = map.values(); }
Set
- Set<Integer> test = new TreeSet<>();
add(val) :向集合中添加元素
clear() :去掉集合中的所有元素
contains(val):判断集合中是否包含某个元素
isEmpty():判断集合是否为空
iterator(): 主要用于递归集合,返回一个Iterator()对象
remove(Object o) :从集合中去掉特定对象
size() :返回集合大小
HashSet类
不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也可能发生变化;
HashSet不是同步的;
集合 元素可以是null;
当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode方法来得到该对象的hashCode值,然后根据该hashCode值决定该对象在HashSet中的存储位置。如果有两个元素通过equals方法比较true,但它们的hashCode方法返回的值不相等,HashSet将会把它们存储在不同位置,依然可以添加成功。也就是说。HashSet集合判断两个元素的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode方法返回值也相等。靠元素重写hashCode方法和equals方法来判断两个元素是否相等,如果相等则覆盖原来的元素,依此来确保元素的唯一性
LinkedHashSet类HashSet还有一个子类LinkedList、LinkedHashSet集合也是根据元素的hashCode值来决定元素的存储位置,但它同时使用链表维护元素的次序,这样使得元素看起来是以插入的顺序保存的,也就是说当遍历集合LinkedHashSet集合里的元素时,集合将会按元素的添加顺序来访问集合里的元素。输出集合里的元素时,元素顺序总是与添加顺序一致。但是LinkedHashSet依然是HashSet,因此它不允许集合重复。
TreeSet类
TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态。
TreeSet内部实现的是红黑树,默认整形排序为从小到大。
与HashSet集合相比,TreeSet还提供了几个额外方法:
Comparator comparator():如果TreeSet采用了定制顺序,则该方法返回定制排序所使用的Comparator,如果TreeSet采用自然排序,则返回null;
Object first():返回集合中的第一个元素;
Object last():返回集合中的最后一个元素;
Object lower(Object e):返回指定元素之前的元素。
Object higher(Object e):返回指定元素之后的元素。
SortedSet subSet(Object fromElement,Object toElement):
返回此Set的子集合,含头不含尾;
SortedSet headSet(Object toElement):返回此Set的子集,由小于toElement的元素组成;
SortedSet tailSet(Object fromElement):返回此Set的子集,由大于fromElement的元素组成;
输出的集合都是有序的
Stack
boolean empty() 测试堆栈是否为空。
Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。
Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。
Object push(Object element) 把项压入堆栈顶部。
int search(Object element) 返回对象在堆栈中的位置,以 1 为基数。
Queue
add(val) 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove() 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
element() 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
offer(val) 添加一个元素并返回true 如果队列已满,则返回false
poll() 移除并返问队列头部的元素 如果队列为空,则返回null
peek() 返回队列头部的元素 如果队列为空,则返回null
put(val) 添加一个元素 如果队列满,则阻塞
take(val) 移除并返回队列头部的元素 如果队列为空,则阻塞
Collections
Collections类里面包括动态、有序、可变大小的一维数组Vector与ArrayList。
Vector的使用如下
vector.add(6);
:单纯的add表示从结尾加入元素vector.size()
:size()能求出vector的所含元素的个数vector.remove(1);
:remove(1)表示删去第1个元素,注意计数从0开始vector.remove(vector.lastElement());
:删去最后一个元素vector.add(0, 1.8888);
:在第0个位置 加入 1.8888这个元素vector.set(0, "a");
:把第0个位置这个元素 改为 a
ArrayList使用方法
ArrayList<Double> arraylist = new ArrayList<Double>();
1. arraylist.add(1.0);
:单纯的add表示从结尾加入元素
2. arraylist.size();
:size()能求出所含元素的个数
3. arraylist.remove(1);
:remove(1)表示删去第1个元素,注意计数从0开始
4. arraylist.remove(arraylist.size() - 1);
:删去最后一个元素
5. arraylist.add(0, 1.8888);
:在第0个位置 加入 1.8888这个元素
6. arraylist.set(0, 9.0);
:把第0个位置这个元素 改为 9.0
7. Collections.sort(arraylist);
:如果arraylist不是抽象类型,则支持排序
8. arraylist.get(i);
:得到第i个位置的元素值,注意从0开始计数。
java中List、Map、Set、Stack、Queue、Collections等的使用的更多相关文章
- Java中Set Map List 的区别
java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...
- JAVA中关于Map的九大问题
通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提 ...
- Map java中的map 如何修改Map中的对应元素
Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map ...
- Java中遍历Map集合的四种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- java中遍历map对象的多种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有ma ...
- java中遍历MAP,嵌套map的几种方法
java中遍历MAP的几种方法 Map<String,String> map=new HashMap<String,String>(); map.put("us ...
- 谈谈java中遍历Map的几种方法
java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...
- Java开发知识之Java中的Map结构
Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...
- javascript 实现java中的Map
javascript实现java中的Map,代码是在国外的一个网站上看到的(http://stackoverflow.com/questions/368280/javascript-hashmap-e ...
- Java中遍历map的四种方法 - 转载
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
随机推荐
- Elasticsearch生产环境遇到的问题以及解决方案
Elasticsearch是一个开源的分布式实时搜索与分析引擎,支持云服务.它是基于Apache Lucene搜索引擎的类库创建的,提供了全文搜索能力.多语言支持.专门的查询语言.支持地理位置服务.基 ...
- [.NET] 常用的reusable library
1. NAudio NAudio is an open source .NET audio and MIDI library, containing dozens of useful audio re ...
- tornado的使用-参数篇
tornado的使用-参数篇
- C语言程序设计100例之(14):丑数
例14 丑数 问题描述 丑数是其质因子只可能是2,3或5的数.前10个丑数分别为1, 2, 3, 4, 5, 6, 8, 9, 10, 12.输入一个正整数n,求第n个丑数. 输入格式 每行为一个 ...
- Pashmak and Parmida's problem(树状数组)
题目链接:http://codeforces.com/contest/459/problem/D 题意: 数列A, ai表示 i-th 的值, f(i,j, x) 表示[i,j]之间x的数目, 问:当 ...
- java中的transient关键字详解
目录 1.何谓序列化? 2.为何要序列化? 3.序列化与transient的使用 4.java类中serialVersionUID作用 5.transient关键字小结 前言 说实话学了一段时间jav ...
- MAC终端中tree命令
Mac没有自带的tree命令,需要额外安装才可以,操作方法有两种: 一.用find命令模拟tree效果 1.mac下默认是没有 tree命令的,不过我们可以使用find命令模拟出tree命令的效果,如 ...
- Oracle10g安装步骤(一)
本例使用安装程序:10201_database_win32 首先将所有文件提取解压出来后,执行setup.exe 安装步骤如下:
- python3 之 趣味数学题(爱因斯坦)
爱因斯坦曾出过这样一道有趣的数学题: 有一个长阶梯,若每步上 2 阶,最 后剩 1 阶; 若每步上 3 阶,最后剩 2 阶; 若每步上 5 阶,最后剩 4 阶; 若每步上 6 阶,最后剩 5 阶; 只 ...
- Feature Fusion for Online Mutual Knowledge Distillation (CVPR 2019)
一.解决问题 如何将特征融合与知识蒸馏结合起来,提高模型性能 二.创新点 支持多子网络分支的在线互学习 子网络可以是相同结构也可以是不同结构 应用特征拼接.depthwise+pointwise,将特 ...