JAVA 中的集合框架
java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
一、集合与数组
数组:(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。(在别的博客转载 https://www.cnblogs.com/leeplogs/p/5891861.html)
集合:(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。(在别的博客转载 https://www.cnblogs.com/leeplogs/p/5891861.html)

collection 接口存储一组不唯一,无序的对象
list 接口存储一组不唯一,有序(插入顺序)的对象
set 接口存储一组唯一,无序的对象
ArrayList: 实现长度可变的数组,在内存中分配连续的空间.遍历元素和随机访问元素的效率比较高
LinkedList: 采用链表存储方式.插入删除元素时效率比较高
Vector 和 ArrayLis 的 异同
实现原理、功能相同、可以互用
主要区别
vector线程安全,ArrayList 重速度轻安全线程非安全
长度需增长时,vector默认增长一倍ArrayList增长50%
Hshtable 和 HashMap的异同
实现原理、功能相同、可以互用
主要区别
Hashtable 继承 Dictionary 类 HashMap 实现Map接口
Hashtable 线程安全,Hashmap线程非安全
Hashmao 不允许有null值,Hashtable允许null值
在实际开发中最好使用ArrayList 和Hashmap
Collections 相当于一个工具类里面提供了排序等等一系列方法 java.util.Collections包下
package TEXT; import java.util.ArrayList;
import java.util.Collections;
import java.util.Random; public class Text {
// 排序
public static void Stringlist() {
ArrayList<Integer> stringlist = new ArrayList<>();
Random random = new Random();
int li;
for (int i = 0; i < 10; i++) {
do {
li = random.nextInt(10);
} while (stringlist.contains(li));
stringlist.add(li);
System.out.println("成功添加" + li);
}
System.out.println("\n"
+ "====================排序前=======================" + "\n");
for (int i = 0; i < stringlist.size(); i++) {
System.out.println(stringlist.get(i));
}
System.out.println("\n"
+ "====================排序后=======================" + "\n");
Collections.sort(stringlist);
for (Integer integer : stringlist) {
System.out.println(integer);
}
} /**
* @param args
*/
public static void main(String[] args) {
{
{
Text.Stringlist();
}
}
}
}

下面的几种集合中比较常用的方法
Map coutries=new HashMap();
添加 put(Object key键名,Object value值)
coutries.put("","");
通过key获得值
String conter=(String)coutries.get("填写key值");
显示集合中的个数
coutries.size();
判断是否存在键名 (返回一个bool值)
Boolean bool=coutries.containsKeys("键名")
判断是否存在值 (返回一个bool值)
Boolean bool=coutries.containsValue("值")
删除集合对象
coutries.remove("键名");
键集
coutries.keySet();
值集
coutries.values();
清空coutries集合
coutries.clear();
迭代器只用于单列集合 双列集合要想使用迭代器 先把双列集合装换成单例集合
package day03map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/** 2018年3月10日 */
public class Day01 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("CBC", "中国建设银行");
map.put("ABC", "中国农业银行");
map.put("ICBC", "中国工商银行");
// 双列的集合遍历方式 不能使用for 下标 因为他没有下标
// 方式一:for : 通过keys集合遍历value
Set<String> set = map.keySet();
for (String key : set) {
System.out.println(key);
// key有了,Value如何获取?
System.out.println(map.get(key));
}
System.out.println("=======================");
// 方式二:直接遍历value
Collection<String> collection = map.values();
for (String value : collection) {
System.out.println(value);
}
System.out.println("==========================");
// 方式三: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());
}
// 方案四:使用迭代器遍历
System.out.println("===========================");
Set<String> keySet = map.keySet();
Iterator<String> iterator = keySet.iterator();
// 迭代器需要手工迭代 ,需要使用while
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println(key);
System.out.println(map.get(key));
}
System.out.println("最后的晚餐=============");
// 方案五:使用迭代器遍历 key+value同时遍历
Iterator<Entry<String, String>> iterator2 = map.entrySet().iterator();
// 见到Iterator就得使用while循环
while (iterator2.hasNext()) {
Entry<String, String> entry = iterator2.next();
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
}
Set类继承了Conllection类,是一种集合类。Set的实现类有三个
HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。
1.Set中是不能出现重复数据的。
2.Set中可以出现空数据。
3.Set中的数据是无序的。
LinkedHashSet
这个相对于HashSet来说有一个很大的不一样是LinkedHashSet是有序的。LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。
TreeSet的特点是:
1.不能写入空数据 2.写入的数据是有序的。 3.不写入重复数据
总结一下集合
定义一个单例集合 默认初始化10个位置,但元素个数为0;
ArrayList 的扩容原理是(乘3/2)+1 也就是 原容量的 0.5倍+1
Vector 的扩容原理是原来的一倍
HashMap:默认初始容量为16 的扩容原理是原来的一倍
HashSet :初始容量也是16 它的扩容也是原来的一倍
JAVA 中的集合框架的更多相关文章
- 菜鸟日记之 java中的集合框架
java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...
- Java中的集合框架(上)
Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...
- Java中的集合框架-Collections和Arrays
上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...
- Java中的集合框架-Map
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...
- Java中的集合框架-Collection(二)
上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...
- Java中的集合框架
概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...
- Java中的集合框架(下)
学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...
- Java中的集合框架-Collection(一)
一,Collection接口 在日常的开发工作中,我们经常使用数组,但是数组是有很多的局限性的,比如:数组大小固定后不可修改,只能存储基本类型的值等等. 基于数组的这些局限性,Java框架就产生了用于 ...
- Java学习--java中的集合框架、Collection接口、list接口
与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...
随机推荐
- 3280 easyfinding
3280 easyfinding 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 给一个M ...
- 《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
原创文章,欢迎转载.转载请注明:关东升的博客 扩展类型的时候,也可以添加新的构造函数.值类型与引用类型扩展有所区别.值类型包括了除类以外的其他类型,主要是枚举类型和结构体类型. 值类型扩展构造函数 扩 ...
- Intellij IDEA工具的常用快捷键
掌握如下常用快捷键可以使自己的开发效率提供十倍. ctrl + B : 转到类或者方法的定义 ctrl + Alt + B:弹出接口/虚类的实现类/子类 ctrl + Alt + 左箭头/右箭头 : ...
- KVM WEB管理工具webvirtmgr安装和使用
生产环境的KVM宿主机越来越多,需要对宿主机的状态进行调控.这里用webvirtmgr进行管理.图形化的WEB,让人能更方便的查看kvm 宿主机的情况和操作 1 安装支持的软件源 yum -y ins ...
- (转)js原生自定义事件的触发dispatchEvent
1. 对于标准浏览器,其提供了可供元素触发的方法:element.dispatchEvent(). 不过,在使用该方法之前,我们还需要做其他两件事,及创建和初始化.因此,总结说来就是: 1 2 3 d ...
- 曾经遇到的坑------href="#"和href="javascript:void(0);"、href="javascript:;"
这个是为了 在点击此链接后回到页首,如果你写href="#"那么点击后会回到页首,这样影响操作. <a href="javascript:void 0" ...
- 分布式计算开源框架Hadoop入门实践(三)
Hadoop基本流程 一个图片太大了,只好分割成为两部分.根据流程图来说一下具体一个任务执行的情况. 在分布式环境中客户端创建任务并提交. InputFormat做Map前的预处理,主要负责以下工作: ...
- XP、win7下Excel 2007多窗口打开Excel的解决方法
http://blog.x6x8.com/?p=330 Win7下的方法(借鉴了XP的方法): 1.先在桌面先建一个txt文件,将下面的代码复制进去 32位WIN7复制下面一行start “Excel ...
- MySQL数据库(2)_MySQL数据库和数据库表操作语句
一.关于数据库操作的sql语句 -- .创建数据库(在磁盘上创建一个对应的文件夹) create database [if not exists] db_name [character set xxx ...
- 一种基于自定义代码的asp.net网站访问IP过滤方法!
对于一些企业内部核心系统,特别是外网访问的时候,为了信息安全,可能需要对外部访问的IP地址作限制,虽然IIS中也提供了根据IP地址或IP地址段进行限制或允许,但并没有提供根据IP地址所在的城市进行限制 ...