Java笔记--集合
1、Java集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组。
2、Java集合可分为Collection和Map两种体系:
--Collection:1)Set:元素无序、不可重复的集合;2)List:元素有序,可重复的集合
--Map:具有映射关系"key/value对"的集合。
3、Collection接口:
|----List接口:
|----ArrayList、LinkedList、Vector
|----Set接口:
|----HashSet、LinkedHashSet、TreeSet
Map接口:
|----HashMap、LinkedHashMap、TreeMap、HashTable(子类:Properties)
4、Collection接口中定义的常用方法:
--add(Object o);//添加对象;
--addAll(Collection col);//将集合col里面的元素全部添加到当前集合;
--clear();//清空当前集合;
--contains(Object o);//判断当前结合是否包含对象o;
--containsAll(Collection col);//判断当前集合是否包含集合col中的所有对象;
--isEmpty();//判断当前集合是否为空;
--remove(Object o);//移除对象o
--removeAll(Collection col);//移除当前集合与col公有的对象(求差集);
--size();//获取当前集合长度(元素个数);
--retainAll(Collection col);//求当前集合与col的公有的元素,并返回给当前集合(求交集);
--equals(Collection col);//判断当前集合与集合col中的对象是否全部相等;
--iterator();//返回当前集合迭代器;
5、List中相对于Collection新增的方法:
void add(int index, Object o);//在制定的index位置处添加元素
boolean addAll(int index, Collection col);//在指定的index位置处添加col中的元素
Object get(int index);//获取指定index的元素
int indexOf(Object o);//返回元素o在集合中首次出现的位置,若不存在o则返回-1
int lastIndexOf(Object o);//返回元素o在集合中最后次出现的位置,若不存在o则返回-1
Object remove(int index);//删除指定index的元素
Object set(int index, Object o);//设置指定index的元素为o
List subList(int fromIndex, int toIndex);//返回当前集合从fromIndex到toIndex的子集合
6、HashSet添加自定义类型时,要实现其不可重复性,则必须要重写equals()和hashCode()两个方法,只写equals()无法保证。
--当向Set中添加对象时,首先调用此对象所在类的hashCode()方法,计算此对象的哈希值,此哈希值决定了此对象在Set中的存储位置。若此位置之前没有对象存储,则这个对象直接存储到此位置,若此位置已有对象存储,再通过equals()比较这两个对象是否相同。如果相同,后一个对象无法添加。
注:若哈希值一样,但是equals()为false,则两个对象存于同一位置,通常不推荐这么使用,需重新设计hashCode()方法。
7、LinkedHashSet:使用链表维护了添加顺序,当遍历集合时,是按照添加的顺序来遍历的(性能略低于HashSet)。
8、TreeSet:1)添加的元素必须是同一类型的;
2)可以按照添加进集合的元素的指定顺序遍历,例如int是从小到大;
3)有两种排序:自然排序,定制排序
4)自然排序需实现Comparable接口,定制排序需要实现Comparator接口。
5)向TreeSet中添加元素时,首先按照compareTo()进行比较,一旦返回0,程序将认为添加的元素与已有元素相同,因而无法添加。
9、Map接口方法:
Object put(Object key, Object value);
Object remove(Object key);
void putAll(Map map);
void clear();
Object get(Object key);
boolean containsKey(Object key);
boolean containValue(Object value);
int size();
boolean isEmpty();
boolean equals();
10、Map遍历:
1)遍历key集
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
2)遍历valus集
Collection coll = map.values();
it = coll.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
3)遍历key-value(entry)集
方式一,通过遍历keySet来得到value
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
Object value = map.get(key);
System.out.println(key + "--->" + value);
}
方式二,直接遍历entry集
Set set1 = map.entrySet();
for(Object obj : set1){
Map.Entry entry = (Map.Entry)obj;
System.out.println(entry.getKey() + "--->" + entry.getValue());
}
11、TreeMap:按照添加进Map中的元素的key的指定属性进行排序。key必须是同一类型的。
12、Hashtable是个Map实现类,线程安全,与HashMap不同,它不允许使用null作为key和value,很少使用。
13、Properties:常用来处理属性文件,键和值都为String类型的。
public static void main(String[] args) throws FileNotFoundException, IOException {
Properties pros = new Properties();
pros.load(new FileInputStream(new File("jdbc.properties")));
String user = pros.getProperty("user");
System.out.println(user);
String psw = pros.getProperty("psw");
System.out.println(psw);
}
14、Collections是一个操作Set、List和Map等集合的工具类,提供了一系列静态(static)的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制方法。
常用方法:1)reverse(List);//反转List中的元素
2)shuffle(List);//对List集合元素进行随机排序
3)sort(List);//很据元素的自然排序对List进行排序
4)sort(List, Comparator);//根据定制排序对List进行排序
5)swap(List, int, int);//将指定List中的两个元素交换
6)Object max(Collection);//根据元素的自然顺序,返回最大值
7)Object max(Collection, Comparator);
8)Object min(Collection);//根据元素的自然顺序,返回最小值
9)Object min(Collection, Comparator);
10)int frequency(Collection, Object);//返回指定对象在集合中出现的次数
11)void copy(List dest, List src);//将src中的元素复制到dest中
12)boolean replaceAll(List list, Object oldVal, Object newVal);//将指定List中的oldVal替换为newVal
Java笔记--集合的更多相关文章
- Java常用集合笔记
最近事情比较少,闲暇之余温习巩固一下Java的一些基础知识,并做一些笔记, Java常用集合, 主要参考的这篇文章:Java常用集合 ArrayList/Vertor 1. ArrayList 的主要 ...
- 【Java】集合_学习笔记
一.集合 1.集合类也称容器类,主要负责保存.盛装其他数据. 2.集合可以保存数量不确定的数据,保存具有映射关系的数据(也称关联数组). 3.Java5后提供一些多线程安全的集合类,放在java.ut ...
- ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢
<!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
- Effective Java笔记一 创建和销毁对象
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- 谈谈Java的集合组件
让我们一起谈谈Java的集合组件 我们在使用Java的时候,都会遇到并使用到Java的集合.在这里通过自己的理解和网上的资源对Java的集合方面的使用做一个简单的讲解和总结. Java主要分为3个集合 ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
随机推荐
- Vacuum Pump Manufacturer Introduction: Airless Pump Bottle
Fillable vacuum pump bottle with matt silver aluminum base and cap and shiny silver aluminum collar. ...
- 【剑指Offer面试编程题】题目1355:扑克牌顺子--九度OJ
题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他 ...
- 使用java实现二叉查找树的插入,修改和删除方法
目前使用的是根据key的hashcode来进行排序,并且没有考虑hash碰撞的问题 package com.zhou.tree; import java.util.Comparator; import ...
- RESTFul Client入门实例
client.html文件内容为: <!DOCTYPE html> <html> <head> <title>RESTFul Client test p ...
- 【转】IntelliJ IDEA 仿照vs2017快捷键设置,以及字体颜色设置
因后期工作需要使用java技术栈,所以近期抽空下载了intelliJ IDEA工具,但是作为一个Net开发者,在使用了vs以后,感觉在使用别的开发工具感觉就是没法和vs相比,毕竟vs被称为宇宙最强id ...
- Spark入门:第2节 Spark集群安装:1 - 3;第3节 Spark HA高可用部署:1 - 2
三. Spark集群安装 3.1 下载spark安装包 下载地址spark官网:http://spark.apache.org/downloads.html 这里我们使用 spark-2.1.3-bi ...
- HttpClient 以post的方式发送请求(由于请求参数太多所以改成以post提交表单的方式)
1:Util类方法 /** * 发送 Post请求 * * @param url * @param reqXml * @return */ public static String post(Stri ...
- 代码审计变成CTF
0x01 代码审计中的信息收集 一个cms代码量确实不少,通读代码耗时长,效果也不一定好.而一个功能点如果之前出过漏洞,特别是多次出现漏洞的地方,证明开发者对这个漏洞的理解不充分,很容易再次绕过补丁. ...
- SRS——打开 stream caster
按照默认的配置编译启动后,发现 stream caster 不起作用,启动时报如下警告: [-- ::][][] stream caster: off 原因是编译SRS时没有打开StreamCaste ...
- Java连载80-数字类格式、随机数、BigDecimal
一.数字类 1.关于数字格式化:java.text.DecimalFormat; 2.数字格式元素: # 任意数字 , 千分位 . 小数点 0 不够补零 package com.bjpowernode ...