java基础28 单例集合Collection下的List和Set集合
单例集合体系:
---------| collection 单例集合的根接口
--------------| List 如果实现了list接口的集合类,具备的特点:有序,可重复 注:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的
------------------| ArrayList ArrayList底层维护了一个object数组的实现的。(线程不安全),特点:查询速度快,增删速度慢。(有序,可重复)
------------------| LinkedList LinkedList底层是使用链表结构实现的,线程不安全,特点:查询速度慢,增删速度快。(有序,可重复)
------------------| Vector(了解即可) 底层也是维护一个Object数组的实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低
--------------| Set 如果实现了set接口的集合类,具备的特点:无序,不可重复 注:集合中的无序不是指自然顺序,而是指添加元素进去的顺序与元素出来的顺序是不一致的
------------------| HashSet 底层是用于一个哈希表支持的。线程不安全,特点:存储速度块
------------------| TreeSet 底层是使用红黑树(二叉树)数据结构实现的,线程不同步(即线程不安全),不能在多线程中共享,但可以使用synchroinzedMap()方法来实现同步。特点:会对元素进行排序存储(按自然顺序)
双例集合体系:
----------| Map 双例集合的根接口。如果是实现了Map接口的集合类,具备的特点:存储的数据都是以键值对形式存在的,键不可重复,值可以重复
--------------| HashMap 底层是基于哈希表实现的,HashMap允许键和值为null,线程不安全,特点:存储速度块
--------------| TreeMap 基于红黑数(二叉树)数据结构实现的,线程不同步(即线程不安全),特点:会对元素经行排序存储
--------------| HashTable(了解即可) 线程安全
一、List 集合
1.1、List接口中的特有方法
添加:
add(E, e) :将指定的元素追加到此列表的末尾
add(int index, E element) :将指定的元素插入此列表中的指定位置
addAll(Collection<? extends E> c):按指定集合的迭代器返回的顺序,将指定集合中的所有元素添加到此(集合)列表的末尾。
获取:
get(int index): get方法获取元素
indexOf(Object o): 找出指定元素第一次出现在集合中,指定的索引值,如果此列表不包含元素,则返回-1。
lastIndexOf(Object o):返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
subList(int fromIndex, int toIndex):截取 包前不包后
修改:
subList(int fromIndex, int toIndex):截取 包前不包后。
add(int index, E element) :将指定的元素插入此列表中的指定位置;如果插入到已有元素的索引值下,则相当于替换原有的数据。
set(int index, E element):用指定的元素替换此列表中指定位置的元素。
1.2、List集合具备的特点
有序,可重复性
注意:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的
1.3、List接口中方法具备的特点
操作的方法都存在索引值,只有list下面的集合才具备索引值;其他接口下面的集合类都没有索引值
1.4、实例
package com.zn.collection; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; /**
* @author DSHORE / 2018-5-16
*
*/
public class Demo5 {
public static void main(String[] args) {
//假设原有的List集合有这四调数据
List<Object> list = new ArrayList<Object>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六"); //添加
list.add(,"老七");
System.out.println(list);//返回值:[张三, 老七, 李四, 王五, 赵六];说明“老七”把“李四”替换了
List<Object> list2 = new ArrayList<Object>();
list2.add("安其拉");
list2.add("亚瑟");
list2.add("赵云");
list.addAll(list2);//把list2集合中的数据添加到list集合中
System.out.println(list);//返回值:[张三, 老七, 李四, 王五, 赵六, 安其拉, 亚瑟, 赵云] //获取
System.out.println("get方法根据索引值获取到的元素:"+list.get());//返回值:李四
for (int i = ; i < list.size(); i++) {//集合用size();数组用length。
//集合用get(i);数组用get[i]。
System.out.print(list.get(i)+",");//返回值:张三,老七,李四,王五,赵六,安其拉,亚瑟,赵云,
}
System.out.println();//换行
System.out.println(list.indexOf("赵六"));//返回值:4
System.out.println(list.indexOf("六六"));//返回值:-1 说明:list集合列表中没有该数据,所以返回值为-1
System.out.println(list.lastIndexOf("安其拉"));//返回值:5 //修改
System.out.println(list.subList(,));//返回值:[老七, 李四, 王五] 说明:subList()截取函数;包前不包后
list.set(,"二狗子");
/*//方式1:
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+",");//返回值:张三,二狗子,李四,王五,赵六,安其拉,亚瑟,赵云,
}*/
//方式2
Iterator<Object> it = list.iterator();
while (it.hasNext()) { //hasNext()和next()都是迭代器(iterator)下面的方法
Object o = it.next();
System.out.print(o+",");//返回值:张三,二狗子,李四,王五,赵六,安其拉,亚瑟,赵云,
}
}
}
二、Set 集合
Set集合与collection集合使用的方法几乎没啥区别。
2.1、Set集合具备的特点
无序,不可重复性
注意:集合中的无序不是指自然顺序,而是指添加元素进去的顺序与元素出来的顺序是不一致的
2.2、List集合与Set集合的区别
相同点:
Set和List一样,也继承于Collection,是集合的一种。
不同点:
Set内部实现是基于Map的,所以Set取值时不保证数据和存入的时候顺序一致,并且不允许空值,不允许重复值。
2.3、实例
package com.dhb.collection; import java.util.HashSet;
import java.util.Set; /**
* @author DSHORE / 2018-5-18
*
*/
public class Demo12 {
public static void main(String[] args) {
Set set=new HashSet();
set.add("王五");
set.add("李四");
set.add("张三");
System.out.println("添加成功了吗:"+set.add("李四"));//返回值:false
System.out.println(set);//返回值:[张三, 李四, 王五] }
}
|
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:http://www.cnblogs.com/dshore123/p/9041806.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
java基础28 单例集合Collection下的List和Set集合的更多相关文章
- java基础27 单例集合Collection及其常用方法
1.集合 集合是存储对象数据的集合容器 1.1.集合比数组的优势 1.集合可以存储任意类型的数据,数组只能存储同一种数据类型的数据 2.集合的长度是变化的,数组的长度是固定的 1.2.数组:存储 ...
- 转载:java基础之单例
转载:https://blog.csdn.net/goodlixueyong/article/details/51935526 https://www.cnblogs.com/cielosun/p/6 ...
- Java基础系列-单例的7种写法
原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755322.html 一.概述 Java中单例有7种写法,这个是在面试中经常被问到的内容,而且有时候 ...
- JAVA基础英语单词表(下)
quantity / 'kwɔntiti / 量,数量 query ...
- Java设计模式之单例
一.Java中的单例: 特点: ① 单例类只有一个实例 ② 单例类必须自己创建自己唯一实例 ③ 单例类必须给所有其他对象提供这一实例 二.两种模式: ①懒汉式单例<线程不安全> 在类加载时 ...
- Java复习11. 单例编程
Java复习11. 单例编程 1.最简单的写法,那个方式是线程不安全的 public class Singleton { private static Singleton instance; ...
- 第5节:Java基础 - 必知必会(下)
第5节:Java基础 - 必知必会(下) 本小节是Java基础篇章的第三小节,主要讲述Java中的Exception与Error,JIT编译器以及值传递与引用传递的知识点. 一.Java中的Excep ...
- java基础36 双例集合Map下的HashMap和TreeMap集合
单例集合体系: ---------| collection 单例集合的根接口--------------| List 如果实现了list接口的集合类,具备的特点:有序,可重复 注:集合 ...
- java基础35 双例集合Map及其常用方法
单例集合体系: ---------| collection 单例集合的根接口--------------| List 如果实现了list接口的集合类,具备的特点:有序,可重复 注:集合 ...
随机推荐
- 闲:测试memcpy和std::copy vector之间拷贝
预测:底层C函数肯定比stl算法快 结果:少量数据底层快,大数据以上则stl对vector的处理可能更好 C/C++: #include <iostream> #include <v ...
- [poj 1533]最长上升子序列nlogn树状数组
题目链接:http://poj.org/problem?id=2533 其实这个题的数据范围n^2都可以过,只是为了练习一下nlogn的写法. 最长上升子序列的nlogn写法有两种,一种是变形的dp, ...
- 主角场景Shader效果:光影
基本思路:unity有一种很容易实现光影效果的神器,那就是unity自带的projector. 首先需要用到两张贴图: 一张投影需要的光圈贴图,如下: 一张根据远近距离显示暗淡的贴图(左至右,白渐变黑 ...
- WEB下面路径的问题
web 中的 / 到底代表什么? 绝对路径-以Web站点根目录为参考基础的目录路径.之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的.相对路径-以引用文件之网页所在位置为参考 ...
- Laravel 项目集合
1. CMS LaraCMS https://github.com/wanglelecc/laracms 2. 电商 3. 点播 MeEdu https://github.com/Qs ...
- ElasticStack系列之十二 & 搜索结果研究
问题 使用 ElasticSearch 做搜索 时,比如用户输入 --> 柠檬,搜出来的结果 --> 柠檬汽水,柠檬味牙膏等在前面,真正想要的水果那个 柠檬 在后面.已经在中文分词中加了 ...
- ElasticStack系列之七 & IK自动热更新原理与实现
一.热更新原理 elasticsearch开启加载外部词典功功能后,会每60s间隔进行刷新字典.具体原理代码如下所示: public void loadDic(HttpServletRequest r ...
- ElasticStack系列之六 & 版本冲突处理之乐观锁
悲观并发控制(PCC) 这一点在关系数据库中被广泛使用.假设这种情况很容易发生,我们就可以阻止对这一资源的访问.典型的例子就是当我们在读取一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修 ...
- P3007 [USACO11JAN]大陆议会The Continental Cowngress
P3007 [USACO11JAN]大陆议会The Continental Cowngress 题意: 给出 n 个法案, m 头牛的意见, 每头牛有两个表决 格式为 "支持或反对某法案&q ...
- day17 包装类、日期类
包装类 作用:1.丰富了基本数据类型只能存放值的问题,还提供了大量的方法或常量. 2.包装类充当了基本数据类型和引用数据类型转换的桥梁. 应用层面:包装类.String.基本数据类型的互相转换. 1. ...