【JavaSE】集合】的更多相关文章

复习javase集合 1.为什么要有集合? 数组长度需要在初始化时确定大小,数据结构单一.因此集合出现了 2.数组和集合的区别 区别一:数组既可以存储基本数据类型,又可以存储引用类型,集合只能存储引用类型 区别二:数组在初始化的时候就需要确认大小,集合有默认初始大小和扩容机制 区别三:集合类有丰富的封装方法 UML图 粗边框的是常用的的类,虚线边框是接口 集合的两大接口 Collection 接口 常用方法: 方法名 说明 返回类型 参数 add 添加元素到末尾 boolean 添加的元素对象…
前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的非常详细.程序员的道理里,我们风雨无阻! 一.Map接口 1.1.Map概述 Map 的字面翻译是映射(地图就是一种映射).将键映射到值的对象,一个映射不能包含重复的键(如果有添加有重复的键,后面的会覆盖掉前面的,但是如果是自定义类型必须重写hashCode()和equals()方法),每个键最多只…
前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的非常详细.程序员的道理里,我们风雨无阻! 一.Map接口 1.1.Map概述 Map 的字面翻译是映射(地图就是一种映射).将键映射到值的对象,一个映射不能包含重复的键(如果有添加有重复的键,后面的会覆盖掉前面的,但是如果是自定义类型必须重写hashCode()和equals()方法),每个键最多只…
Java集合 Java集合,也称之为容器.基本上你写所有的Java程序,都必须要用到一个包.该API基本都位于java.util工具类包中,是JavaSE中的重中之重.简单可以总结为“1136”,分别是一个图,一个类,三个知识点,六个接口.下面逐个剖析. 1.一个图 备注: 实现Collection接口的,基本都是按个的方式存入的集合类. 实现Map接口的,基本都是按照键值对的方式存入的集合类. 这两个接口都定义了该类型集合的基本方法. Collectionz中,两个对象互相equalsw为tr…
集合 l  Collection 层次结构中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许有重复的元素,而另一些则不允许.一些 collection 是有序的,而另一些则是无序的.JDK 提供更具体的子接口(如 Set 和 List.Queue)实现.此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection. l  List:有序的 collection(也称为序列).此接口的用…
1.对象的存储: 数组(基本数据类型 & 引用数据类型) 集合(引用数据类型) 2.集合框架 Collection 接口: 方法: iterator().toArray();  迭代器遍历集合 子接口:      List接口:存储有序可重复的元素 ArrayList 主要实现类,线程不安全 LinkedList(频繁插入删除) Vector  作用与ArrayList 相似,但是线程安全 ,速度慢 Set接口:存储无序不可重复的元素 HashSet  LinkedHashSet  TreeSe…
为什么出现集合类 为了方便对多个对象的操作,对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合的不同 数组是固定长度的,集合是可变长度的 数组可以存储基本数据类型,集合只能存储对象 数组只能存储同一种对象,集合可以存储多种对象 常见体系 容器有很多种,有特性和共性,我们对共性进行不断的向上抽取,就形成了一个体系,这就是集合框架 最顶层Collection接口,分出两个常用的子接口List和Set List接口分出三个常见的ArrayList,LinkedList,Vector Set接…
通常,我们在代码中创建一个集合(例如,List 或 Set ),并直接用一些元素填充它. 实例化集合,几个 add方法调用,使得代码重复. public class Demo01 { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("abc"); list.add("def"); list.add("gh…
Collection接口的常用方法 add(),添加一个元素 addAll(),添加一组元素 clear(),清空 remove(),移除一个 removeAll(),移除一组 size(),元素个数 isEmpty(),判断是否为空 iterator(),迭代 集合中存储的对象,都是引用地址 打印集合,直接system.out.println()会输出集合,包在一个中括号里面 List:元素是有序的,元素可以重复,该集合体系有索引 Set:元素是无序的,元素不可以重复 List集合的特有的方法…
TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构 左边叉是小的,右边叉是大的 存储自定义对象 定义一个类Student实现Comparable类,使自定义类具备比较性 定义属性年龄age 定义属性姓名name 实现compareTo()方法,传递进来另一个Student对象 判断当前Student对象的age大于另一个Student对象的age,返回1,否则返回-1 获取Student对对象 调用TreeSet对象的add()方法,参数:Student对象 遍历…
java为我们提供了一个集合的工具类,方便我们对集合进行操作,里面的方法都是静态方法. Collections.sort()方法,参数:List<T>集合对象,这个对象带着泛型,是为了保证集合中的元素具备可比较性,因此这个返回值的泛型就会特殊点, <T extends Comparable <? super T>> 默认排序字符串,是按照字母的排列顺序 如果是中文,默认是按照ascii编码进行排序的 自定义一个比较器,实现按照字符串的长度进行排序 定义一个类StrCom…
当我们创建一个集合以后,可以直接使用system.out.println()来打印这个集合,但是,我们需要可以对每个元素进行操作,所以,这里需要使用迭代器来遍历集合 迭代器其实就是集合取出元素的方式 调用List对象的iterator()方法,得到Iterator对象,这个类是个接口类型,因此可以知道返回的是Iterator接口的子对象 while()循环,条件是,List对象的hasNext()方法,返回布尔值不为false 循环里面调用List对象的next()方法,可以得到每一个元素 im…
Map集合,将key对象映射到value对象 三个主要的子类:Hashtable,HashMap,TreeMap Hashtable:底层是哈希表数据结构,不允许使用null值,线程同步 HashMap:底层是哈希表数据结构,允许使用null值,线程不同步 TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键排序 使用keySet()方法遍历Map集合 调用Map对象的keySet()方法,得到Set对象,这里存储的是所有的键 import java.util.HashM…
package Swxx; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Xx { public static void main(String[] args) { // TODO Auto-generated method stub method(); method1(); method2(); } public static void metho…
一.集合框架 1.特点 对象封装数据,对象多了也需要存储,集合用于存储对象. 对象的个数确定可以使用数组,但是不确定的话,可以用集合,因为集合是可变长度的. 2.集合和数组的区别 数组是固定长度的,集合是可变长度的. 数组可以存储基本数据类型,也可以存储引用数据类型:集合只能存储引用数据类型. 数组存储的元素必须是同一个数据类型:集合存储的对象可以是不同的数据类型. 3.数据结构 对于集合容器,有很多种.因为每一个容器的自身特点不同,其实原理在于每个容器内部的数据结构不同,集合容器在不断向上的抽…
ArrayList特点:底层使用数组数据结构,查询速度快(使用脚标查),插入删除慢(索引要改变) LinkedList特点:底层使用链表数据结构,查询慢(需要一个一个去问),插入删除快 Vector特点:底层是数组数据结构,线程同步,被ArrayList替代了 ArrayList import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { ArrayList l…
Set:元素是无序,不可重复的 HaseSet:底层数据结构是哈希表 定义一个类Demo 获取Demo对象,system.out.println(demo),打印demo对象,Demo@xxxxxx Demo对象在内存中是按照哈希值存储在哈希表中,取出也是按照哈希值,所以是无序的 import java.util.HashSet; class Demo{ } public class HashSetDemo { /** * @param args */ public static void ma…
JavaSE基础:集合类 简单认识类集 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 而要向存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识里,有哪些是容器类呢? 数组和StringBuffer,但是呢?StringBuffer的结果是一个字符串,不一定满足我们的要求,这就是对象数组. 而对象数组又不能适应变化的需求,因为数组的长度固定的,这个时候,为了适应变化的需求,J…
序言 双十一那天去我女朋友那了,11.11到11.13 漏了两天的内容,今天中午刚回来的,赶紧补一下前两天漏下的博文,我相信,坚持下来,会有成长的,等到出去实习那一天,肯定会很有帮助,会感谢现在自己的努力. 对了,因为常常会被别人影响到自己,看到别人努力,自己玩了两天就感觉心里好慌啊,每到这个时候,我就告诉自己:不与他人相比,但求超越自己, 希望有跟同样情况的同学也能这样来安抚自己那颗躁动的心,踏踏实实,按照自己的节奏走下去. ---  WH 一.什么是死锁(deadlock)? 自我解答: 这…
Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT(抽象数据模型)的部分,数据结构不是针对于某一门语言,它所讲的通常是对各语言都通用的ADT部分,ADT和具体实现是没有关系的.但是根据教材.根据各专业的不同,各专业会选用使用不同编程语言实现的教材.而我们所讲的,就是如何使用Java数据容器,即Java集合(用Java实现的ADT),具体的实现部分,…
前言:因为最近要重新找工作,Collection(集合)是面试中出现频率非常高的基础考察点,所以好好恶补了一番. 复习过程中深感之前的学习不系统,而且不能再像刚毕业那样死背面试题,例如:String是固定长度的,StringBuffer和StringBuilder的长度是可以变化的.如果一旦问得深入一点,问为什么有这样的区别就傻眼了,只能一脸呆萌地看着面试官. 因此想要通过写文章的形式,系统地总结学习的内容,例如Collection架构是怎样的.有哪些相关的继承和接口实现,这样才能了解什么时候应…
前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的文章,大多都是以罗列记忆点的形式书写的,没有谈论实现细节和逻辑原理.作为个人笔记无可厚非,但是并不利于他人学习.希望能通过这种比较“费劲”的讲解,帮助我自己.也帮助读者们更好地学习Java.掌握Java. 无论你跟我一样需要应聘,还是说在校学生学习Java基础,都对入门和进一步启发学习有所帮助.(关…
前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和ArrayList.HashSet.LinkedList等等.根据核心框架图,相信我们都已经对Collection这个JavaSE中最常用API之一有一个较为全面的认识. 这个学习过程,还可以推及到其他常用开源框架和公司项目的学习和熟悉上面.借助开发工具或说明文档,先是对项目整体有一个宏观的认识,再根…
一.为什么需要集合 如果要将100个学生成绩存放到程序中,怎么做? 首先想到是数组 int[] scores=new int[100]; 然而,长度是固定的,比如是101个学生成绩,这个数组就不能用了,越界. 另外如果只使用了10个,则另外90个都被浪费了. 总之:集合是数组的升级,长度是动态的,无需预定义 package com.zhangguo.chapter8.d1; import java.util.ArrayList; import java.util.List; public cla…
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [010] - JavaSE面试题(十):集合之Map 第1问:HashMap和HashTable有什么区别? HashMap允许键和值是null,而Hashtable不允许键或者值是null. Hashtable是同步的,而HashMap不是.因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境. HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失…
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [009] - JavaSE面试题(九):集合之Set 第1问:List和Set的区别? List,Set都是继承自Collection接口.都是用来存储一组相同类型的元素的. List特点: 元素有放入顺序,元素可重复 . 有顺序,即先放入的元素排在前面. Set特点: 元素无放入顺序,元素不可重复. 无顺序,即先放入的元素不一定排在前面.不可重复,即相同元素在set中只会保留一份.所以,有些…
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [008] - JavaSE面试题(八):集合 第1问:说一下集合的体系? 单列集合: 双列集合: 第2问:Collection 和 Collections的区别? Collection:是java.uitl 下的接口,他是各种集合的父接口,继承于它的接口主要有set 和list: Conllecitons:是个java.util下的类,是针对集合的工具类,提供一系列静态方法对各种集合的搜索,排…
△列表迭代器也是不支持在迭代的时候添加元素的,只是列表迭代器自己定义了增删的方法而已.迭代器可以看成实在两个元素之间的指针,每当调用next就跳过一个元素并返回刚刚跳过的元素. △HashTable不允许null作为键和值,而HashMap可以. △在Java中,所有链表实际上都是双向连接的,即每个节点还存放着指向前驱节点的引用 ,add方法将在listiterator迭代器位置前添加一个元素.尽管有Listiterator,但是对列表的并发修改仍然会产生异常,但是这里有个特例,set操作不被视…
  15.01 对象数组的概述和使用 public class Student { // 成员变量 private String name; private int age; // 构造方法 public Student() { super(); } public Student(String name, int age) { super(); this.name = name; this.age = age; } // 成员方法 // getXxx()/setXxx() public Stri…
  16.01 ArrayList存储字符串并遍历 ArrayList类概述:底层数据结构是数组,查询快,增删慢,线程不安全,效率高 ArrayList类是List 接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括 null在内的所有元素.除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小. 例: public class Practice { public static void main(String[] args) { ArrayList al =…