Java集合学习_Java集合学习(适合新手)
集合框架
由⼀组类和接⼝组成的⼀个体系。
Collection 集合框架
最基本的接⼝,⼀个 Collection 可以存储⼀组⽆序、不唯⼀的对象,实际开发中不会直接使⽤ Collection 进⾏开发。
List是 Collection 的⼀个⼦接⼝,存储⼀组有序、不唯⼀的对象,集合框架中最常⽤的接⼝之⼀。
List 接口的实现类 :ArrayList、LinkedList
Set 是 Collection 的⼀个⼦接⼝,存储⼀组⽆序、唯⼀的对象。
Set 接口的实现类:TreeSet、HashSet、LinkedHashSet
Map 独⽴于 Collection 的另外⼀个接⼝,存储⼀组键值对象(key-value),通过键到值的映射。
Map 接口的实现类:HashMap、TreeMap、Hashtable
Iterator ⽤来输出集合元素的接⼝,⼀般适⽤于⽆序集合。
//获取集合的迭代器 将集合内的元素输出
Iterator iterator =set.iterator();while(iterator.hasNext()){
System.out.println(iterator.next());
}
Enumeration 更能与 Iterator ⼀样,已经被 Iterator 所取代。
SortedSet Set 的⼦接⼝,可以对 Set 集合中的元素进⾏排序。
SortedMap Map 的⼦接⼝,可以对 Map 集合中的元素进⾏排序。
Queue 队列接⼝,此接⼝可以实现对列操作。
Map.Entry Map 内部的接⼝,描述 Map 中的⼀个键值对元素。
Collection 常⽤的⽅法
int size() 返回集合的⻓度
boolean isEmpty() 判断集合是否为空
boolean contains(Object o) 判断集合中是否存在 o
Iterator iterator() 返回迭代器Object[] toArray() 将集合转为数组
boolean add(Object o) 向集合中添加元素
boolean remove(Object o) 从集合中删除 o
boolean remove(int index) 从集合中删除下标是 index 的元素
System.out.println(list.size());//输出list集合的长度
System.out.println(list.isEmpty());//判断list集合是否为空
System.out.println(list.contains(1));//判断list集合是否包含元素 1
Object[] array= list.toArray();//将一个集合 转成一个数组
System.out.println(array);
list.remove(1);//删除下标为1的元素
list.remove("java");//删除集合中的java元素
System.out.println(list);
System.out.println("##########################");
Vector 是⼀个早期的 List 的实现类,⽤法基本与 ArrayList ⼀致。
Stack 是⼀个栈的数据结构的实现,栈的特点是“后进先出”,“先进后出”。
♦ push 将数据压如到栈中。
♦ peek 取出栈顶元素,以复制的形式。
♦ pop 取出/移除栈顶元素。
LinkedList 实现了⼀个“先进先出”的队列,不但要保存⾃⼰的数据,同时要保存前驱节点、后继节点的
位置信息,所有需要更多的内存空间。
//list 实现的一个先进先出的队列
LinkedList list1=newLinkedList();
list1.add("How");
list1.add("are");
list1.add("you");
System.out.println(list1);
ist.offer("JavaSE");
System.out.println(list);
list.add(1,"List");
System.out.println(list);
System.out.println(list.getLast());
System.out.println(list.get(1));
栈和队列的区别
Stack stack = newStack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);for(int i=0;i<5;i++){
System.out.println(stack.pop());
}
System.out.println("****************");
LinkedList list= newLinkedList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);for(int i=0;i<5;i++){
System.out.println(list.pop());
}
Queue 队列,要求存⼊的数据必须是有序的,所以如果要存⼊⾃定义数据类型,则需要实现
Comparable 接⼝,⾃定义的类就具备了排序的功能。
public class User implementsComparable {private intid;privateString name;public intgetId() {returnid;
}public void setId(intid) {this.id =id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public User(intid, String name) {this.id =id;this.name =name;
}/*** 0 表示相等
* 1 表示this⽐o⼤
* -1 表示this⽐o⼩
*@paramo
*@return
*/@Overridepublic intcompareTo(Object o) {
User user=(User) o;if(this.id
}if(this.id>user.id){return -1;
}if(this.id ==user.id){return 0;
}return 0;
}
}Queue queue= newPriorityQueue();
User user= new User(1,"张三");
User user1= new User(2,"李四");
queue.add(user);
queue.add(user1);
System.out.println(queue);
Set 集合框架
Set 是 Collection 另外⼀个常⽤的⼦接⼝,Set 接⼝以散列的形式来存储数据,元素没有顺序(1、不能
通过下标取出元素,2、遍历集合,元素的输出是随机的)可以存储⼀组唯⼀、⽆序的数据。
实际开发中,不能直接实例化 Set。
HashSet、LinkedHashSet、TreeSet
HashSet 存储⼀组⽆序且唯⼀的数据,⽆序是指存⼊的顺序和取出的顺序没有关系。
Set set = newHashSet();
set.add("Java");
set.add("Hello");
set.add("World");
System.out.println(set.size());
Iterator iterator=set.iterator();while(iterator.hasNext()){
System.out.println(iterator.next());
}
set.remove("Hello");
iterator=set.iterator();while(iterator.hasNext()){
System.out.println(iterator.next());
}
LinkedHashSet 存储⼀组有序且唯⼀的数据,这⾥的有序不是说可以通过下标取数据,LinkedHashSet
依然没有下标概念,这⾥的有序是指存⼊的顺序和取出的顺序⼀致。Set set = new LinkedHashSet();
set.add("Java");
set.add("Hello");
set.add("World");
set.add("JavaSE");
set.add("JavaME");
set.add("JavaEE");
Iterator iterator=set.iterator();while(iterator.hasNext()){
System.out.println(iterator.next());
}
LinkedHashSet 判断两个对象是否相等:
1、判断 hashcode 是否相等,如果不相等,就认为是两个对象不相等。
如果 hashcode 相等,再来执⾏判断 2。
2、通过 equals ⽅法判断是否相等。
TreeSet 保存⼀组有序且唯⼀的数据,这⾥的有序是指集合内部会⾃动给所有的元素进⾏升序排列,⽆
论按照什么样的顺序存⼊数据,输出的时候⼀定是按照升序进⾏输出。
HashSet:存⼊的顺序和输出顺序没有关联,输出是随机的。
LinkedHashSet:存⼊顺序和输出顺序⼀致。
TreeSet:⽆论什么顺序存⼊,输出⼀定是升序。
Set set = newTreeSet();
People people= new People(1,"张三");
People people1= new People(2,"李四");
People people2= new People(3,"王五");
set.add(people);
set.add(people1);
set.add(people2);
Iterator iterator=set.iterator();while(iterator.hasNext()){
System.out.println(iterator.next());
}public class People implementsComparable {private intid;privateString name;public intgetId() {returnid;
}public void setId(intid) {this.id =id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public People(intid, String name) {this.id =id;this.name =name;
}
@OverridepublicString toString() {return "People{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
@OverridepublicintcompareTo(Object o) {
People people=(People) o;int num = 0;if(this.id>people.id){
num= 1;
}if(this.id
num= -1;
}returnnum;
}
}
Map集合框架
Map 是完全独⽴于 Collection 的另外⼀套体系,Set、List、Collection 只能操作单个元素,每⼀次的存
取操作只能针对⼀个元素,Map 可以操作⼀对元素,key-value 的映射。
K:key
V:value
常⽤⽅法:
int size() 获取集合的⻓度
boolean isEmpty() 判断集合是否为空
boolean containsKey(Object key) 判断集合中是否存在某个 key 值
boolean containsValue(Object value) 判断集合是否存在某个 value
V get(Object key) 取出集合中 key 对应的 value
V put(Object key,Object value) 向集合存储⼀组 key-value 值
V remove(Object key) 删除集合中 key 对应的 value
void clear() 清空集合
Set keySet() 取出集合中所有的 key,组成⼀个 Set 返回
Collection values() 取出集合中所有的 value,组成⼀个 Collection 返回
HashMap:存储⼀组⽆序,key 不可重复,value 可重复的元素。
Hashtable:存储⼀组⽆序,key 不可重复,value 可重复的元素。
TreeMap:存储⼀组有序(key),key 不可重复,value 可重复的元素。
Map map = newHashMap();
map.put("h","Hello");
map.put("w","World");
map.put("j","Java");
map.put("s","JavaSE");
map.put("m","JavaME");
map.put("e","JavaEE");
System.out.println(map);
map.remove("m");
System.out.println(map);
map.put("jj","Java");
System.out.println(map);
System.out.println(map.containsKey("jj"));
System.out.println(map.containsValue("Java"));
Set keys=map.keySet();
System.out.println(keys);//遍历
Iterator iterator =keys.iterator();while(iterator.hasNext()){
String key=(String) iterator.next();
System.out.println(key+"-"+map.get(key));
}
Collection values=map.values();for(Object value:values){
System.out.println(value);
}
HashMap 和 Hashtable ⽤法⼀样,Hashtable 较早推出的⼀个 API(Application Interface) 应⽤程序接
⼝,Hashtable 是线程安全的,但是性能较低,HashMap 线程不安全,但是性能更⾼。
Map map = newHashtable();
map.put("h","Hello");
map.put("w","World");
map.put("j","Java");
map.put("s","JavaSE");
map.put("m","JavaME");
map.put("e","JavaEE");
System.out.println(map);
map.remove("m");
System.out.println(map);
map.put("jj","Java");
System.out.println(map);
System.out.println(map.containsKey("jj"));
System.out.println(map.containsValue("Java"));
Set keys=map.keySet();
System.out.println(keys);//遍历Iterator iterator = keys.iterator();
while(iterator.hasNext()){
String key=(String) iterator.next();
System.out.println(key+"-"+map.get(key));
}
Collection values=map.values();for(Object value:values){
System.out.println(value);
}
TreeMap 可以按照 key 值对数据进⾏排序。
public class Pet implementsComparable {private intage;public Pet(intage) {this.age =age;
}
@Overridepublic intcompareTo(Object o) {
Pet pet=(Pet) o;if(this.age>pet.age){return 1;
}if(this.age
}return 0;
}
@OverridepublicString toString() {return "Pet{" +
"age=" + age +
'}';
}
}
Map map= newTreeMap();
Pet pet1= new Pet(1);
map.put(pet1,"Hello");
Pet pet2= new Pet(2);map.put(pet2,"World");
Pet pet3= new Pet(3);
map.put(pet3,"Java");
Pet pet4= new Pet(4);
map.put(pet4,"JavaSE");
Pet pet5= new Pet(5);
map.put(pet5,"JavaME");
Pet pet6= new Pet(6);
map.put(pet6,"JavaEE");
System.out.println(map);
♦
Java集合学习_Java集合学习(适合新手)相关推荐
- Java闭关修炼64课 很适合新手学习的JAVA视频教程
Java闭关修炼64课 很适合新手学习的JAVA视频教程 java闭关修炼第一课 什么是java(1).rar java闭关修炼第一课 什么是java.rar java闭关修炼第七课 基础语言 ...
- java入门学习_Java入门学习进阶知识点
Java入门学习进阶知识点 入门阶段,主要是培养Java语言的编程思想.了解Java语言的语法,书写规范等,掌握Eclipse.MyEclipse等开发工具,编写Java代码的能力.学完这个阶段你应该 ...
- java集合总结_java集合小总结
java集合就是一个容器. 1. 集合概述 l 为了保存不确定的数据,或者对象,以及保存具有映射关系的数据. l 所有的集合类都位于java.util包下. 1.1. ...
- java集合继承_java集合继承关系
数组虽然也可以存储对象,但长度是固定的:集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象. 集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象. 上述类图中, ...
- java 集合 接口_Java集合之Collection接口
1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...
- java 线程起名字_java多线程学习三::::为什么要给线程起名字并且知道守护作用?...
为什么要会线程起名字呢? 你如果拿到一连串的Thread-01,Thead-02我想你应该会疯掉,看以下代码 package rs.thread.day0504; /** * @auther rs * ...
- java集合示例_Java集合的addAll()方法和示例
集合类addAll()方法addAll()方法在java.lang包中可用. addAll()方法用于将所有给定元素(ele)放入给定集合(co). addAll()方法是一个静态方法,可以使用类名进 ...
- java新人培训_Java新人学习必要的步骤以及全套学习路线!
原标题:Java新人学习必要的步骤以及全套学习路线! 想学Java,刚开始有没有觉得无从下手呢?其实Java的基础知识点,并不多,但是一定要吃透,因为这是为后续核心的学习打下一个良好的基础.简单来说, ...
- java族谱设计_Java集合族谱总结
集合族谱核心成员 集合族谱核心成员 所有的集合类,都实现了Iterator接口,这是用于遍历集合中元素的接口:Java集合框架核心是两个类型的容器,一种是集合(Collection),存储单一元素,一 ...
最新文章
- 【教女朋友学网络系列1】之OSI与TCP/IP
- javascript总for of和for in的区别?
- 微软SQL Server 2012新特性Silverlight报表客户端 - Power View
- css3新增了哪三种边框效果,怎么在CSS3中实现一个边框效果
- 连接池-Connection pools
- sqlserver Split 开放写法有兴趣的学习一下
- 《Flash MX培训教程》前言
- win10下 STLINK 驱动不正常 禁用强制验证数字签名
- c语言角度换成弧度的编码,角度弧度转换代码
- MobaXterm连接到Linux虚拟机教程
- bitcoin全节点搭建
- Mybatis复习1——B站
- iOS静态库SDK制作(包含第三方静态库)
- ICA原理推导及代码实现
- 圆周率近似计算matlab,matlab 圆周率的近似计算 实验报告.doc
- app开发-CocoaChina
- Unity中传送带的实现
- 计算机系是什么学位_您拥有计算机科学学位可以做什么?
- 电大计算机与英语模拟测试题,2014年9月大学英语B统考 电大 网院网考模拟试题4...
- 详细讲解Java并发编程
热门文章
- Excel中如何修改批注作者
- jQuery 源码分析第一篇之入口源码
- C++ 莫队算法(转)
- distinct aggregation
- Storyboard更改layer层属性
- Redis安装配置和介绍
- Python.Scrapy.12-scrapy-source-code-analysis-part-2
- Exchange Server2010系列之十五:Exchange磁盘压力测试
- 返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)
- 新注册了一个BLOG