集合框架

由⼀组类和接⼝组成的⼀个体系。

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集合学习(适合新手)相关推荐

  1. Java闭关修炼64课 很适合新手学习的JAVA视频教程

    Java闭关修炼64课 很适合新手学习的JAVA视频教程 java闭关修炼第一课 什么是java(1).rar   java闭关修炼第一课 什么是java.rar   java闭关修炼第七课 基础语言 ...

  2. java入门学习_Java入门学习进阶知识点

    Java入门学习进阶知识点 入门阶段,主要是培养Java语言的编程思想.了解Java语言的语法,书写规范等,掌握Eclipse.MyEclipse等开发工具,编写Java代码的能力.学完这个阶段你应该 ...

  3. java集合总结_java集合小总结

    java集合就是一个容器. 1.     集合概述 l       为了保存不确定的数据,或者对象,以及保存具有映射关系的数据. l       所有的集合类都位于java.util包下. 1.1.  ...

  4. java集合继承_java集合继承关系

    数组虽然也可以存储对象,但长度是固定的:集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象. 集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象. 上述类图中, ...

  5. java 集合 接口_Java集合之Collection接口

    1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...

  6. java 线程起名字_java多线程学习三::::为什么要给线程起名字并且知道守护作用?...

    为什么要会线程起名字呢? 你如果拿到一连串的Thread-01,Thead-02我想你应该会疯掉,看以下代码 package rs.thread.day0504; /** * @auther rs * ...

  7. java集合示例_Java集合的addAll()方法和示例

    集合类addAll()方法addAll()方法在java.lang包中可用. addAll()方法用于将所有给定元素(ele)放入给定集合(co). addAll()方法是一个静态方法,可以使用类名进 ...

  8. java新人培训_Java新人学习必要的步骤以及全套学习路线!

    原标题:Java新人学习必要的步骤以及全套学习路线! 想学Java,刚开始有没有觉得无从下手呢?其实Java的基础知识点,并不多,但是一定要吃透,因为这是为后续核心的学习打下一个良好的基础.简单来说, ...

  9. java族谱设计_Java集合族谱总结

    集合族谱核心成员 集合族谱核心成员 所有的集合类,都实现了Iterator接口,这是用于遍历集合中元素的接口:Java集合框架核心是两个类型的容器,一种是集合(Collection),存储单一元素,一 ...

最新文章

  1. 【教女朋友学网络系列1】之OSI与TCP/IP
  2. javascript总for of和for in的区别?
  3. 微软SQL Server 2012新特性Silverlight报表客户端 - Power View
  4. css3新增了哪三种边框效果,怎么在CSS3中实现一个边框效果
  5. 连接池-Connection pools
  6. sqlserver Split 开放写法有兴趣的学习一下
  7. 《Flash MX培训教程》前言
  8. win10下 STLINK 驱动不正常 禁用强制验证数字签名
  9. c语言角度换成弧度的编码,角度弧度转换代码
  10. MobaXterm连接到Linux虚拟机教程
  11. bitcoin全节点搭建
  12. Mybatis复习1——B站
  13. iOS静态库SDK制作(包含第三方静态库)
  14. ICA原理推导及代码实现
  15. 圆周率近似计算matlab,matlab 圆周率的近似计算 实验报告.doc
  16. app开发-CocoaChina
  17. Unity中传送带的实现
  18. 计算机系是什么学位_您拥有计算机科学学位可以做什么?
  19. 电大计算机与英语模拟测试题,2014年9月大学英语B统考 电大 网院网考模拟试题4...
  20. 详细讲解Java并发编程

热门文章

  1. Excel中如何修改批注作者
  2. jQuery 源码分析第一篇之入口源码
  3. C++ 莫队算法(转)
  4. distinct aggregation
  5. Storyboard更改layer层属性
  6. Redis安装配置和介绍
  7. Python.Scrapy.12-scrapy-source-code-analysis-part-2
  8. Exchange Server2010系列之十五:Exchange磁盘压力测试
  9. 返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)
  10. 新注册了一个BLOG