集合类Collection Map
数组与集合的区别:数组虽然也可以存储对象,但长度是固定的;集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。
集合特点:1、用于存储对象;
2、长度可变;
3、可存储不同对象;
一、Collection
ArrayList<Object> list=new ArrayList<Object>();
list.add("A");//添加对象A;
list.add(index,A);//在角标index位置上插入对象 A;
list.addAll( 集合); //在list里面加入集合;
list.clear();清除集合所有
boolean b=list.contain(a);返回指定角标的值(获取集合里的元素)
list.remove(a);删除角标为a的元素
list.is Empty;空集就返回true;
int index=list.indexOf(a);返回在集合里首次出现a的角标,没有就返回-1;
list.set(index,a);将指定元素a替代列表中角标为index的元素
list.size();集合里对象数
list.retainAll(list1);//取两个集合的交集,list里面只保留交集。
迭代器:
I terator it = list1.iterator();
system.out.println(it.next());// 返回一个元素,从第一个元素开始返回
while(it.hasNext()){//获取迭代器,取出集合里面的元素
System.out println(it.next)
}
反向迭代遍历集合里的元素:
while(it.hasprevious()){
System.out.println(it.previous);
}
Arraylist: 底层的数据结构使用的是数组
特点:查询速度快,删减慢;
linkList:
linkList:底层链表数据结构
特点:删减快,查询速度慢。
LinkedList link = new LinkedList();
addFirst();从前面开始添加
addlast();从后面开始添加元素
link.getFirst(); 获取第一个元素;如果没有元素会出现NoSuchElementException异常
link.getLast());获取最后一个元素
link.removeFirst()获取第一个元素并删除;如果没有元素会出现NoSuchElementException异常
link.removeLast();获取最后一个元素并删除
link.offerFirst()从前面开始添加
link.offerLast(); 从后面开始添加
获取元素,但不删除元素,如果集合中没有元素,会返回null
link.peekFirst();
link.peekLast();
获取元素,但是元素被删除,如果集合中没有元素,会返回null
link.pollFirst();
link.remove()//链表集合为空,抛出异常
link.poll()//链表集合为空,返回null;
collections.sort()按自然顺序排列
vector:
底层是数组数据结构。和ArrayList一样,区别:线程同步
枚举是vector特有的取出方式,不是通用的,已被取代;
Set接口:
Hashset:
是无序的,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法
TreeSet:
可以对Set集合里面进行排序; 底层数据是:二叉树,保证元素唯一行的依据。
public static void main(String[] args) {
TreeSet<String> tr = new TreeSet<String>();
tr.add("cba");
tr.add("abcd");
tr.add("aaa");
tr.add("bca");
tr.add("Aca");
Iterator<String> it = tr.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//输出:
// Aca
// aaa
// abcd
// bca
// cba
}
排序的方式:让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法。也称之为元素的自然顺序,或者也可以称之为默认顺序。
TreeSet集合的第二种比较方式
当元素自身不具备比较性时,或者具备的比较性不是所需要的,集合需要具备比较性。
public class MyCompare implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
Student s1 = (Student)o1;
Student s2 = (Student)o2;
int num = s1.getName().compareTo(s2.getName());//先比较名字
if(num == 0){//如果名字相等
if(s1.getAge() > s2.getAge()){//比较年龄
return 1;
}else if(s1.getAge() == s2.getAge()){
return 0;
}
return -1;
}
return num;
}
}
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Student> tr = new TreeSet<Student>(new MyCompare());
tr.add(new Student("zhangsan01",40));
tr.add(new Student("zhangsan02",21));
tr.add(new Student("zhangsan003",22));
Iterator<Student> it = tr.iterator();
while(it.hasNext()){
Student stu = it.next();
System.out.println(stu.getName()+"......"+stu.getAge());
}
}
}
map
Map集合:该集合存储键值对,是一对一对的存储,注意:保证键值的唯一性。
put(K key, V value)\\添加
clear()清除
判断:containsValue(Object value)
containsKey(Object key)
isEmpty()
get(key) //
values()//
keySet()//获取KEY集合
Map的子集合
Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。
HashMap:底层是哈希表数据结构,允许存入null键null值,该集合是不同步的。
TreeMap:底层是二叉树数据结构,线程不同步。可以用于给map集合里面的键进行排序。
map集合中两种取出方式:
1、keyset:将map中所有的键存入set集合,因为set具备迭代器,所以可以迭代方法取出所有的键,再根据get方法获取每一个键对应的值
HashMap<String,String> hm = new HashMap<String,String>();
hm.put("01", "zhang1");
hm.put("02", "zhang2");
hm.put("03", "zhang3");
hm.put("04", "zhang4");
//先获取map集合的所有键的set集合,keyset()
Set<String> set = hm.keySet();
//有了set集合就可以获取其迭代器
Iterator<String> it = set.iterator();
while(it.hasNext()){
String key = it.next();
//有了键我们就可以通过map集合的get方法获取其对应的值
String value = hm.get(key);
System.out.println("key = "+key+" value = "+value);
}
Map集合的取出原理:将map集合专程set集合,再通过迭代器取出
2、entrySet() :将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是Map.Entry.其实Entey也是一个接口,它事Map接口中的一个内部接口。
集合类Collection Map的更多相关文章
- 12. 集合类Collection和Map
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- ios 对象的集合类(collection classes)
当你着手为你的应用编写代码的时候,你会发现有许多可供使用的Objective-C的框架类,其中尤其重要的就是基础框架类,它为平台所有的应用提供基础服务.基础框架类中包括了表示字符串和数字等基本数据类型 ...
- Collection Map Java数据结构
Collection Map 框架图 Collection 接口的接口 对象的集合 ├ List 子接口 按进入先后有序保存 可 ...
- 第十节 集合类Collection和Map
接口 Collection<E> (E)代表类型 集合类: 与数组的异同: 数组:数组虽然也可以存储对象,但长度是固定的:集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象 ...
- java 基础 --Collection(Map)
Map是不是集合?哈哈哈 java编程思想>的第11章,第216页,正数第13行,中原文:“……其中基本的类型是LIst.Set.Queue和Map.这些对象类型也称为集合类,但由于Java类库 ...
- java的集合类【Map(映射)、List(列表)与Set(集)比较】
https://baike.baidu.com/item/java%E9%9B%86%E5%90%88%E7%B1%BB/4758922?fr=aladdin https://www.cnblogs. ...
- 集合类——Collection、List、Set接口
集合类 Java类集 我们知道数组最大的缺陷就是:长度固定.从jdk1.2开始为了解决数组长度固定的问题,就提供了动态对象数组实现框架--Java类集框架.Java集合类框架其实就是Java针对于数据 ...
- Java容器类接口:Iterator,Collection,Map
Iterator Iterator被称为迭代器,是一个对象,它的工作是遍历并选择序列中的对象,可以实现以下一些操作: 使用方法iterator()要求容器返回一个Iterator,Iterator将返 ...
- 基础常用的数据结构 Collection Map
map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.其中这四者的区别如下(简单介绍): HashMap:我们最常用的Map ...
随机推荐
- Sql server用QQ邮箱发送邮件
一.配置数据库邮件 https://jingyan.baidu.com/article/3ea51489a135f752e71bba5b.html
- lamp中的Oracle数据库链接
lamp一键安装包: https://lnmp.org/install.html 在CentOS 6.7 64位安装PHP的PDO_OCI扩展 Installing PDO_OCI extension ...
- 吴超老师课程--Hive的介绍和安装
1.Hive1.1在hadoop生态圈中属于数据仓库的角色.他能够管理hadoop中的数据,同时可以查询hadoop中的数据. 本质上讲,hive是一个SQL解析引擎.Hive可以把SQL查询转换为 ...
- springmvc 原生servlet支持
/** * 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型 * * HttpServletRequest * HttpServletResponse * HttpSes ...
- PAT 天梯赛 L1-012. 计算指数 【水】
题目链接 https://www.patest.cn/contests/gplt/L1-012 AC代码 #include <iostream> #include <cstdio&g ...
- HDOJ_1087_Super Jumping! Jumping! Jumping! 【DP】
HDOJ_1087_Super Jumping! Jumping! Jumping! [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- Google ProtocolBuffer
https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html 1. Protocol Buffers 简介 Protocol Buff ...
- IE6/7 下:inline-block解决方案
6/IE7下:inline-block解决方案 IE6/IE7下对display:inline-block的支持性不好. 1.inline元素的display属性设置为inline-block时, ...
- 链接指示:extern "C"
C++程序有时需要调用其他语言编写的函数,最常见的是调用C语言编写的函数.像所有其他名字一样,其他语言中的函数名字也必须在C++中进行声明,并且该声明必须指定返回类型和形参列表.对于其他语言编写的函数 ...
- 调试ASP.NET网站IIS环境问题解决方法汇总
调试网站时出现错误,错误如下: 1. 分析器错误消息: 创建 RewriterConfig 的配置节处理程序时出错: 无法生成临时类(result=1).error CS2001: 未能找到源文件“C ...