java集合类总结

合集下载

java中集合的概念

java中集合的概念

java中集合的概念Java中的集合是一种非常重要的数据结构,用于存储和操作一组对象。

集合框架包含了许多类和接口,可以方便地进行数据的存储、查询、排序等操作,使得Java程序开发变得更加高效和便捷。

在本文中,我们将逐步介绍Java中集合的概念和用法。

一、集合框架概述Java中的集合框架是一个包含了多个接口和类的层次结构,用于表示和操作一组对象。

集合框架包含了通用的集合接口和实现,以及特定的集合类和接口,如List、Set、Map等。

集合框架的接口和类都是通过泛型实现的,可以存储任意类型的对象,比如基本类型和自定义类型的对象。

二、集合框架的接口Java中的集合框架包含了多个接口,其中包括:1. Collection:代表一组对象的集合,是其他集合接口的父接口。

它定义了一些通用的方法,如添加、删除、迭代等。

2. List:代表有序的集合,其中每个元素都有一个对应的索引。

List允许重复元素出现,并且可以通过索引访问、添加、删除元素。

3. Set:代表无序的集合,其中每个元素都是唯一的。

Set不允许重复的元素出现,可以用来去重。

4. Map:代表一组键值对的集合,其中每个键都是唯一的。

Map 允许多个值对应同一个键,可以用来快速查找和存储数据。

三、集合类的实现Java中的集合类可以通过实现集合接口来实现。

如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是集合类的实现,我们可以通过这些集合类来方便地实现对一组对象的操作。

例如:1. 使用ArrayList来实现List接口,可以进行元素的添加、删除、查询等操作:List<String> list = new ArrayList<>();list.add("Alice");list.add("Bob");System.out.println(list.get(1));2. 使用HashSet来实现Set接口,可以去重并存储元素:Set<Integer> set = new HashSet<>();set.add(1);set.add(2);set.add(2);System.out.println(set.size());3. 使用HashMap来实现Map接口,可以快速查找并存储数据:Map<String, Integer> hashMap = new HashMap<>(); hashMap.put("Alice", 12);hashMap.put("Bob", 18);System.out.println(hashMap.get("Bob"));四、集合的迭代Java中的集合类都实现了Iterable接口,因此可以使用迭代器来访问集合中的元素。

java集合类基础问题汇总

java集合类基础问题汇总

java集合类基础问题汇总1、Java集合类框架的基本接⼝有哪些?参考答案集合类接⼝指定了⼀组叫做元素的对象。

集合类接⼝的每⼀种具体的实现类都可以选择以它⾃⼰的⽅式对元素进⾏保存和排序。

有的集合类允许重复的键,有些不允许。

Java集合类提供了⼀套设计良好的⽀持对⼀组对象进⾏操作的接⼝和类。

Java集合类⾥⾯最基本的接⼝有:Collection:代表⼀组对象,每⼀个对象都是它的⼦元素。

Set:不包含重复元素的Collection。

List:有顺序的collection,并且可以包含重复元素。

Map:可以把键(key)映射到值(value)的对象,键不能重复。

2、为什么集合类没有实现Cloneable和Serializable接⼝?参考答案克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。

因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。

3、什么是迭代器(Iterator)?参考答案Iterator接⼝提供了很多对集合元素进⾏迭代的⽅法。

每⼀个集合类都包含了可以返回迭代器实例的迭代⽅法。

迭代器可以在迭代的过程中删除底层集合的元素,但是不可以直接调⽤集合的remove(Object Obj)删除,可以通过迭代器的remove()⽅法删除。

4、Iterator和ListIterator的区别是什么?参考答案下⾯列出了他们的区别:Iterator可⽤来遍历Set和List集合,但是ListIterator只能⽤来遍历List。

Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。

ListIterator实现了Iterator接⼝,并包含其他的功能,⽐如:增加元素,替换元素,获取前⼀个和后⼀个元素的索引,等等。

5、快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?参考答案Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。

java字符串集合

java字符串集合

java字符串集合 ⼀,java的接⼝跟C语⾔所能做到的相⽐确实是让⼈眼前⼀亮的东西。

利⽤接⼝可以将多种东西放到⼀起,在编程过程中就能省略掉相同类的很多重复代码,将代码进⾏分类别的,统⼀的处理。

⼆,java中的字符串处理,java中的字符串并不像C语⾔那样利⽤⼆维数组来进⾏操作,⽽是对应了String这个对象,可以⽤new的⽅法创建⼀个字符串对象,⽽这个字符串对象有很多⽅法可以直接调⽤,这样直接对对象进⾏操作,显得⾮常⽅便。

神奇的字符串操作⽅法str.length()str.indexOf(),indexOf有不同参数的⽅法调⽤,对应不同的⽅法。

str.equals("XXX")字符串⽐较⽅法,java中的字符串⽐较与c语⾔类似,不能够使⽤==进⾏⽐较str.charAt(int num)访问字符串对应num上的字符StringBuffer是可以改变的字符串,可以⽤append()等String所没有的⽅法;java对字符串的操作与C语⾔相⽐,因为已经有⽅法可以直接调⽤了,就像C语⾔别⼈已经把函数给你写好了,所以使⽤起来只需要调⽤就好了 三,java中的容器,java中有很多的容器,容器在我理解来可以⽤来存放对象所使⽤的,⽼师所给的样例中所给是Vector容器,是⼀个向量类,可以动态调整数据⼤⼩,(这个向量似乎指的不是数学意义上的向量),其他的⽐如Linklist和Arraylist等,都是可以动态调整⼤⼩的,这是C语⾔所不具备的。

⽽且向量类有很多⽅法,声明和使⽤起来都⽐较⽅便前⾯写java程序的时候,⽼师很多会给出样例,写起来的时候感觉还可以,所以这次写字符串集合操作⽅法的时候,显得有些杂乱。

写Mystring类的时候还没有太⼤区别,直接就定义了⼀个stringlist向量容器,利⽤构造⽅法进⾏构造后,调⽤其它⽅法进⾏操作即可。

但是当我尝试着将这些⽅法调⽤的时候,便会有很多细节反⾯不理解,eclipse进⾏相应的报错;1,对很多量进⾏声明的时候,可能编程过程中规范不是很好,⽤了eclipse的⾃动纠正功能后,将我的代码中在main中定义的对象转化成类的属性并加上了static修饰,查阅了static相关资料后发现,static相当于全局变量,在main程序运⾏前已经存在,后来在main中重新写了相应的对象定义⽅法,注释掉了eclipse的⾃动纠正模块,所幸程序正常.2.java迭代器的使⽤,是java容器的特点,能够更安全的对向量容器⾥⾯的内容进⾏遍历,但似乎本⼈⽬前还不会使⽤迭代器进⾏双重循环,所以仍然⽤.length()⽅法进⾏遍历。

java集合

java集合

比较指定的对象与列表是否相等。 E get(int index)
返回列表中指定位置的元素。
int indexOf(Object o)
返回列表中首次出现指定元素的索引,如果列表不包含此 元素,则返回 -1。
Iterator iterator()
<E>
返回以正确顺序在列表的元素上进行迭代的迭代器。
int lastIndexOf(Object o)
List接口和LinkedList类 3-3
• 第二步:具体实现
public clas1s、Fir添stL加eve头lTit条leD、B3以{ 及最末条新闻标题 public static void main(String[] args) { FirstL2ev、elT获itle取car头= n条ew、Fir以stL及eve最lTit末le(1条, "汽新车闻", "标管理题员", new Date()); FirstLevelTitle medical = new FirstLevelTitle(2, "医学", "管理员",new Date()); 3、删除头条、以及最末条新闻标题
iterator() 返回在此 collection 的元素上进行迭代的迭代器。
remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话(可选操
作)。 size()
返回此 collection 中的元素数。 toArray()
返回包含此 collection 中所有元素的数组。
返回列表中最后出现指定元素的索引,如果列表不包含此 元素,则返回 -1。
List常用方法

java中集合知识点总结

java中集合知识点总结

java中集合知识点总结1. Collection接口Collection接口是Java中集合类的基本接口,它定义了一组通用的操作方法,包括添加、删除、查找等操作。

Collection接口有三个主要的子接口:List、Set和Queue。

(1) ListList是一种有序的集合,它允许重复的元素,并且可以按照索引访问元素。

List接口中有常用的实现类:ArrayList、LinkedList和Vector。

其中,ArrayList是基于数组实现的,它支持快速的随机访问和插入操作;LinkedList是基于双向链表实现的,它支持快速的插入和删除操作;Vector是线程安全的类,它支持并发访问。

(2) SetSet是一种不允许重复元素的集合,它用来存储唯一的元素。

Set接口中有常用的实现类:HashSet、LinkedHashSet和TreeSet。

其中,HashSet是基于哈希表实现的,它提供了快速的查找和插入操作;LinkedHashSet是基于哈希表和链表实现的,它保持了元素的插入顺序;TreeSet是基于红黑树实现的,它提供了有序的集合。

(3) QueueQueue是一种先进先出的集合,它用来存储元素,并且支持插入和删除操作。

Queue接口中有常用的实现类:LinkedList和PriorityQueue。

其中,LinkedList可以作为Queue来使用,它支持快速的插入和删除操作;PriorityQueue是基于堆实现的,它提供了优先级队列的功能。

2. Map接口Map接口是Java中的映射表,它用来存储键值对的数据。

Map接口中有常用的实现类:HashMap、LinkedHashMap、TreeMap和Hashtable。

其中,HashMap是基于哈希表实现的,它提供了快速的查找和插入操作;LinkedHashMap是基于哈希表和链表实现的,它保持了键值对的插入顺序;TreeMap是基于红黑树实现的,它提供了有序的映射表;Hashtable是线程安全的类,它支持并发访问。

Java中常用的集合类有哪些?它们的使用场景是什么?

Java中常用的集合类有哪些?它们的使用场景是什么?

Java中常用的集合类有哪些?它们的使用场景是什么?Java作为目前最为流行的编程语言之一,其优越的面向对象编程思想和强大的类库使其成为了广大编程爱好者和专业开发者的首选语言之一。

在Java开发中,常用的集合类具有广泛的应用场景,可以大大简化我们代码的编写和维护。

在本篇文章中,我们将介绍Java中常用的集合类有哪些,它们的使用场景是什么,以及如何选择合适的集合类来应对各种场景。

一、Java中常用的集合类Java中常用的集合类包括List、Set、Map等,具体如下:1.ListList是Java中最基础和最常用的集合类之一,它是一个有序的集合,可以存储重复的元素。

List提供了一系列的方法用来操作列表中的元素,如添加、删除、获取、修改等。

常见的List有ArrayList 和LinkedList。

2.SetSet是Java中的另一个基础集合类,它是一个无序的集合,不允许存储重复的元素。

Set提供了一系列的方法用来操作集合中的元素,如添加、删除、获取等。

常见的Set有HashSet、TreeSet。

3.MapMap是Java中常用的映射关系集合,它存储键值对,支持通过键来访问值。

Map提供了一系列的方法用来操作映射关系,如添加、删除、获取、修改等。

常见的Map有HashMap、TreeMap、ConcurrentHashMap等。

二、Java中常用集合类的使用场景不同的集合类有不同的使用场景,我们需要根据具体的业务需求来选择合适的集合类。

下面我们来介绍几种常见的使用场景及其对应的集合类。

1.需要随机访问元素的情况:ArrayListArrayList是Java中常用的集合类之一,它支持随机访问,通过索引访问元素的时间复杂度为O(1),是处理元素数量较大的情况下的较好选择。

2.需要频繁插入或删除元素的情况:LinkedListLinkedList是另一个常用的集合类,它支持快速的插入和删除操作,通过节点互相关联实现。

java中的常用集合类整理

java中的常用集合类整理

java中的常⽤集合类整理⽬录Collection接⼝集合的遍历:iterator 接⼝集合的遍历:增强for循环List接⼝ArrayListSet接⼝Map接⼝HashMapLinkedHashMapTreeMapPropertiesCollections⼯具类总结集合、数组都是对多个数据进⾏存储操作(主要是内存层⾯存储)的结构,简称Java容器。

数组的特点1.数组初始化以后,长度确定不可变2.数组定义好,其元素的类型确定不可变(可能有多态性)3.数组中提供的⽅法有限,对于添加、删除、插⼊数据等操作不⽅便。

4.获取数组中实际元素的个数是没有办法的。

5.数组存储数据的特点是有序、可重复的。

Java集合可分为Collection和Map两种体系,集合存储的优点是解决数组存储数据⽅⾯的弊端。

Collection接⼝:单列数据,⽤来存储⼀个⼀个的对象List接⼝:元素有序,可重复的集合 --> '动态'数组Set接⼝ :元素⽆序、不可重复的集合Map接⼝:双列数据,保存有映射关系(键值对)的集合Collection接⼝向collection接⼝的实现类的对象中添加数据obj时,要求obj所在类要重写equals⽅法。

Abstract Methodsadd(Object e):将元素e添加到集合中size():获取添加的元素个数addAll(Collection coll):将形参coll集合的元素添加到当前集合中clear():清空集合元素,集合仍然存在,只是集合⾥没有元素isEmpty():判断当前集合是否为空contains(Object obj):判断当前集合中是否包含obj,是否包含是通过调⽤obj的equals判断containsAll(Collection coll):判断形参coll中的所有元素是否都存在当前集合中。

remove(Object obj):移除某个元素,同样通过equals寻找移除的元素removeAll(Collection coll):从当前集合中移除coll集合中所有的元素,需要调⽤equals函数retainAll(Collection coll):求两个集合的交集,结果为修改当前集合后的集合。

java常用集合使用方法

java常用集合使用方法

java常⽤集合使⽤⽅法1.初步尝试java中的集合使⽤⽅式:public static void main( String [] args ){//List 对象User user=User.builder().id(0).name("huhua"+0).build();//a.最常见Add的初始化⽅式List<User> users=new ArrayList<User>();for (int i=0;i<100;i++){users.add(User.builder().id(i).name("huhua"+i).build());}//b.使⽤双花括号在初始化的同时赋值List<User> users2= new ArrayList<User>() {//这个⼤括号就相当于我们 new 接⼝{//这个⼤括号就是构造代码块会在构造函数前调⽤this.add(new User(0,"huahua0"));this.add(new User(1,"huahua1"));}};//c.利⽤Lists⼯具类 https:///google-guava///c1. Lists 提供了两个⽅法:⼀个是创建⼀个空列表;。

List<String> list1 = Lists.newArrayList();list1.add("str1");list1.add("str2");list1.add("str3");//c2.⼀个是创建空列表的同时遍历迭代器,将它的值添加到列表中List<String> list2 = Lists.newArrayList(list1.iterator());//d. 利⽤Arrays⼯具类List<String> arrList= Arrays.asList( new String[]{"huahu0","huahau1","huahua2"});//e.Collections 还提供了⼀个为 List ⼀次性添加所有元素的⽅法,弥补了原先 List 只能添加 Collections,⽽不⽀持数组的缺憾。

黑马程序员java培训就业班笔记集合体系总结

黑马程序员java培训就业班笔记集合体系总结

1、Collection:集合框架的由来:因为每一个容器对象的自身的数据结构不同,所以对它们进行单独的描述和对象封装,并非断的向上抽取共性内容,这样变形成了集合框架。

概念:集合就是一个容器、用来存储对象、长度可变。

理解:其实班级就是一个容器,班上的每一个学生都是单独封装了功能的对象,因为班级中的人数由于有人请假天天都再转变,所以长度是可变的,常见方式:1、增加:add();增加一个元素addAll();增加一部份元素。

2、删除:Remove();删除一个元素,会返回boolean类型,其实用到是equals方式,所以判断是不是有符合要求的元素。

若是删除成功会改变集合的长度。

下面同理。

removeAll();删除全数Clrea();清空容器总结:在这里要尤其注意,面试题中常常考到。

3、判断:Contains();是不是包括,也就说要所有的都包括在其中才算包括,不然不算包括。

isEmpty();集合是不是为空Size();集合长度。

4、取:retainAll();取交集。

理解总结:班级就是一个容器,班级中进来一名新生就是Add()添加一个元素,来了一堆同窗就是addAll,班上出去一个学生就是remove删除一个,出去一部份就是removeAll删除一部份,班级是不是有人,isEmpty,班上是不是包括张三contains,班上有多少人size。

班上是不是包括隔壁班的同窗retainAll.去交集。

集合利用细节:1、直接存储大体数据类型值也是可以的,因为后有自动装箱,会将大体数据类型转成对象,绝对不行。

Eg:(3)2、集合对象中存储的实际上是对象的元素的引用。

3、Add的参数是Object类型,可以接收所有的类型的对象,会出现向上转型,掏出元素时类型仍是Object不能利用具体对象的特有内容,想要利用特有内容向下转型。

Eg:Object obj="obj";想要掏出访问子类的特有方式,向下转型,String s=(String)();sop());|--List:有序列表(存取顺序是一致的)因为该子体系元素中有索引或角标,可以存储重复的元素。

Java集合排序及java集合类详解(Collection、List、Map、Set)

Java集合排序及java集合类详解(Collection、List、Map、Set)

Java集合排序及java集合类详解(Collection, List, Set, Map)摘要内容Java里面最重要,最常用也就是集合一部分了。

能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。

本文详细解释了关于Java中的集合是如何实现的,以及他们的实现原理。

关键字:Collection , List ,Set , Map , 集合,框架。

目录1 集合框架 (2)1.1 集合框架概述 (2)1.1.1 容器简介 (2)1.1.2 容器的分类 (4)1.2 Collection (6)1.2.1 常用方法 (6)1.2.2 迭代器 (8)1.3 List (10)1.3.1 概述 (10)1.3.2 常用方法 (11)1.3.3 实现原理 (15)1.4 Map (18)1.4.1 概述 (18)1.4.2 常用方法 (18)1.4.3 Comparable 接口 (23)1.4.4 实现原理 (25)1.4.5 覆写hashCode() (29)1.5 Set (33)1.5.1 概述 (33)1.5.2 常用方法 (34)1.5.3 实现原理 (38)1.6 总结:集合框架中常用类比较 (39)2 练习 (40)3 附录:排序 (41)1集合框架1.1集合框架概述1.1.1容器简介到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一些有意义的事情。

举例来说,假设要存储许多雇员,不同的雇员的区别仅在于雇员的身份证号。

我们可以通过身份证号来顺序存储每个雇员,但是在内存中实现呢?是不是要准备足够的内存来存储1000个雇员,然后再将这些雇员逐一插入?如果已经插入了500条记录,这时需要插入一个身份证号较低的新雇员,该怎么办呢?是在内存中将500条记录全部下移后,再从开头插入新的记录? 还是创建一个映射来记住每个对象的位置?当决定如何存储对象的集合时,必须考虑如下问题。

java集合知识点总结

java集合知识点总结

java集合知识点总结Java集合是Java编程中的一个重要的部分,它的理解和使用对编程者来说是必不可少的。

它为开发者提供了一种更好地操作和管理数据的方法,大大提高了应用开发所需的效率。

本文将简要介绍Java 集合的相关概念与特性,并通过实例来更好地了解其中的知识点。

一、Java集合介绍Java集合(Collection)包括一组对象(Object),它们可以是基本类型、对象或数组,它们可以用来存储,操作和管理程序中的数据,充分体现了“面向对象”编程的抽象能力。

Java集合的特点有:(1)集合是一种容器,可以存放任何类型的对象,它是一种非常抽象的概念,可以把一堆数据项放入集合对象中;(2)集合可以自动管理里面存放的对象,提供了统一的接口来访问和修改集合中的对象,从而避免了繁琐的操作;(3)集合的每个元素都有一定的顺序,也就是说可以通过顺序来访问它们;(4)集合还可以通过索引来访问元素,而且允许程序在集合中搜索元素,这对于快速定位某个元素是非常有用的;(5)集合可以保持对象的顺序,新加入的对象总是会在特定的位置被存放,从而保证了集合中元素的顺序;(6)集合可以保持在一个容器中的唯一性,允许只有一个唯一的元素存在,因此可以用来实现不出现重复元素的数据结构。

二、Java集合类Java集合类提供了一系列容器来存储、操作和管理不同类型的数据。

基本上,Java提供的集合类可以分为两个基本类型:集合和映射。

集合:集合是用来存储元素的一种容器,它提供了一系列的方法,可以用来添加、移除和检索容器中的对象。

在Java中,拥有两个基本的集合类型:线性集合和非线性集合。

线性集合:线性集合是指那些元素之间存在有序关系的集合,元素在线性集合中可以通过索引来访问。

它主要包括List和Set,其中List是有序的集合,而Set则是无序的集合。

非线性集合:非线性集合是指元素之间没有有序关系的集合,它提供的操作更为灵活,可以通过指定的键来访问元素。

map集合的知识点总结

map集合的知识点总结

map集合的知识点总结一、概述Map集合是Java中的一种接口,用于存储键值对的数据。

它允许我们通过键来访问和获取值,并且可以根据键来进行数据的添加、删除和修改。

在Map集合中,每个键都是唯一的,而值可以重复。

Map集合在实际开发中有着广泛的应用,例如用于存储配置信息、缓存数据、保存用户信息等。

二、常见的Map实现类在Java中,Map接口有许多的实现类,常见的有HashMap、LinkedHashMap、TreeMap、WeakHashMap、ConcurrentHashMap等。

不同的Map实现类有着不同的特点和适用场景,下面分别介绍一下这几种常见的Map实现类。

1.HashMapHashMap是Java中最常用的Map实现类之一,它基于哈希表实现,可以用来存储大量的键值对数据。

在HashMap中,键和值都可以为null,但是键只能有一个null值,而值是可以重复的。

2.LinkedHashMapLinkedHashMap继承自HashMap类,它除了具备HashMap的特性外,还可以保持插入顺序或者访问顺序。

由于它内部使用了双向链表来维护元素的顺序,因此它要比HashMap 稍微占用更多的存储空间。

3.TreeMapTreeMap是基于红黑树实现的有序映射,它可以根据键的自然顺序或者自定义排序规则来存储键值对数据。

TreeMap中的键和值都不能为null,而且它的键是有序的,因此可以用来实现按照键进行排序的功能。

4.WeakHashMapWeakHashMap是一种弱引用的HashMap,它的键是弱引用类型,也就是说当某个键不再被引用时,这个键值对将会被自动从WeakHashMap中删除。

WeakHashMap通常用于缓存数据的实现。

5.ConcurrentHashMapConcurrentHashMap是Java中线程安全的Map实现类,它使用了分段锁的机制来实现并发访问,不仅能够提高并发性能,而且也能保证数据的一致性。

java工作总结(精选12篇)

java工作总结(精选12篇)

java工作总结java工作总结(精选12篇)总结是事后对某一阶段的学习或工作情况作加以回顾检查并分析评价的书面材料,它能够使头脑更加清醒,目标更加明确,让我们一起来学习写总结吧。

那么如何把总结写出新花样呢?下面是小编整理的java总结,仅供参考,希望能够帮助到大家。

java工作总结篇1作为一个软件开发工程师(我也是一名软件开发工程师),所实在的如果每年只做那么一两个项目,年终工作总结写起来也应该得心应手的,我们只需要把本年度该项目的基本情况简历表述一下,自己在项目中的角色以及自己在项目中遇到的重点问题及解决方案描述一下,最后展望一下下一年度的工作计划,ok,本年度的工作总结基本完成。

20××年2月2日,我有幸成为北京超图一员,应聘为公司的java 软件工程师。

入任职以来,在部门领导的带领下,自己感觉无论学习、技术、生活等方面都有很大的提升。

我主要完成的工作有三方面:1、荆门石油石化巡检系统的调研和开发。

该项目是我工作以来第一次涉及到调研,对我来说算是一个不小的挑战。

在调研过程中,让我学会了如何通过和客户的沟通来了解客户的需求。

由于自己的工作经验不足,在调研工作中体现出一些问题。

不能很直接的在和客户沟通中非常准确的了解客户的更多需求,有很多需要和客户交流沟通多次才能明白客户的最终需求,也没有把自己作为最终用户并站在用户的角度上来考虑问题,这些都是我在以后的工作中需要提高和改进的地方。

在巡检系统的开发工作中,让我进一步巩固和加强了自己的开发能力。

2、电信12530增值业务的开发与维护。

从5月以来我就开始接手公司的主要业务之一,12530电信增值业务。

由于前面负责这个项目的同事突然离职,导致这个项目的交接工再做得不够好,对我顺利接手这个项目造成很大的困难。

而刚一接手这个项目,马上就需要新上一个投票活动,并要对一些主要代码进行修改,让我倍感压力,几乎都快放弃。

最后在金总的指导和鼓励下,顺利的完成这次活动。

Java中List集合的常用方法详解

Java中List集合的常用方法详解

Java中List集合的常⽤⽅法详解⽬录1、voidadd(intindex, Eelement)2、booleanaddAll(intindex, Collection<?extends E>c)3、E get(intindex)4、intindexOf(Objecto)5、ListIterator<E>listIterator()6、ListIterator<E>listIterator(intindex)7、E remove(intindex)8、E set(intindex, Eelement)9、List<E>subList(intfromIndex,inttoIndex)总结List接⼝是继承Collection接⼝,所以Collection集合中有的⽅法,List集合也继承过来。

这篇⽂章就不讲继承Collection接⼝的那些⽅法了1、void add(intindex, Eelement)在指定位置插⼊元素,后⾯的元素都往后移⼀个元素。

2、boolean addAll(intindex, Collection<? extends E>c)在指定的位置中插⼊c集合全部的元素,如果集合发⽣改变,则返回true,否则返回false。

意思就是当插⼊的集合c没有元素,那么就返回false,如果集合c有元素,插⼊成功,那么就返回true。

3、E get(intindex)返回list集合中指定索引位置的元素4、int indexOf(Objecto)返回list集合中第⼀次出现o对象的索引位置,如果list集合中没有o对象,那么就返回-15、ListIterator<E> listIterator()返回此列表元素的列表迭代器(按适当顺序)。

listIterator和iterator的区别是什么呢?下⾯这篇博客⽐较详细的分析,可以参考。

如何使用Java中集合类的详细讲解

如何使用Java中集合类的详细讲解

import java.util.*;public class Testset {public static void main(String args[]){ Set set = new HashSet();set.add("aaa");set.add("bbb");set.add("aaa");set.add("bbb");set.add("aaa");set.add("bbb");set.add("aaa");set.add("bbb");set.add("aaa");set.add("bbb");Iterator ite=set.iterator();set.size();while(ite.hasNext())System.out.println("------"+ite.next()); }}在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频频遇到这样的“抉择” 。

:)(主要还是面试的时候)久而久之,也就有了一点点的心得体会,写出来以供大家讨论。

总的说来,Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:Collection<--List<--VectorCollection<--List<--ArrayListCollection<--List<--LinkedListCollection<--Set<--HashSetCollection<--Set<--HashSet<--LinkedHashSetCollection<--Set<--SortedSet<--TreeSetVector : 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。

java各详细总结知识点

java各详细总结知识点

java各详细总结知识点一、Java语法1. 数据类型Java中的数据类型分为基本数据类型和引用数据类型。

基本数据类型包括整型,浮点型,字符型和布尔型。

引用数据类型包括类、接口、数组等。

2. 变量在Java中,变量是用来存储数据的容器。

它们可以存储不同类型的数据,例如整数、浮点数、字符等。

变量分为局部变量和成员变量。

3. 运算符Java中的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。

这些运算符可以实现数据的计算和比较。

4. 控制流Java中的控制流包括顺序结构、选择结构和循环结构。

通过控制流语句,程序可以根据条件执行不同的代码块,实现不同的功能。

5. 方法方法是Java中用来组织和重用代码的一种机制。

它可以细化程序的逻辑结构,并提高代码的可读性和可维护性。

6. 数组数组是一种用来存储多个相同类型数据的容器。

在Java中,数组可以是一维的、二维的甚至多维的。

使用数组可以方便地管理大量数据。

7. 字符串在Java中,字符串是一种特殊的对象类型。

Java提供了丰富的字符串处理方法,例如字符串连接、子字符串提取、字符串比较等。

8. 输入输出在Java中,通过输入输出流可以实现与外部设备的交互。

Java提供了丰富的输入输出类和方法,可以实现文件的读写、网络通信等功能。

二、面向对象编程1. 类和对象在Java中,所有的代码逻辑都是围绕类和对象展开的。

类是一种模板,描述了对象的属性和行为。

对象是类的实例,可以根据类创建多个对象。

2. 封装封装是面向对象编程的核心思想之一。

通过封装,可以将数据和行为封装在一个对象中,避免外部直接访问对象的数据。

3. 继承继承是一种代码复用的机制,可以让子类继承父类的属性和方法。

通过继承,可以实现类与类之间的层次关系,提高代码的重用性和扩展性。

4. 多态多态是面向对象编程的另一个核心概念。

通过多态,可以使不同类的对象对同一消息作出不同的响应。

多态性可以提高代码的灵活性和可扩展性。

java返回集合为null还是空集合及空集合的三种写法小结

java返回集合为null还是空集合及空集合的三种写法小结

java返回集合为null还是空集合及空集合的三种写法⼩结⽬录返回集合为null还是空集合及空集合的三种写法返回空List的⽅式⽅式⼀:new ArrayList() ⽅式⼆:new ArrayList(0)⽅式三:Collections.emptyList()(推荐)返回集合为null还是空集合及空集合的三种写法个⼈认为在⾃⼰写接⼝时,需要返回集合时返回⼀个空集合,⽐如mybatis查询如果返回⼀个集合,结果为空时也会返回⼀个空集合⽽不是null。

那么这样有什么好处呢?最⼤的好处就是调⽤⽅不⽤在判断是否为null,可以直接⽤,因为不⽤抛空指针。

当然这也有缺点,如果返回Lists.newArrayList();或者new ArrayList();这会新建⼀个对象,⽽这个对象很可能是没必要的,这样⽩⽩浪费性能。

解决⽅法当然也有,可以⽤Collections.emptyList();这个⽅法返回⼀个空集合,并不会新建对象,⽽是返回public static final List EMPTY_LIST = new EmptyList<>();这个变量。

当然这也有缺点,如果调⽤⽅只是遍历,这没什么不会报错,但是如果要新增,删除⾥⾯的元素那就会报错,那么你可能想为什么,原因就是代码⾥直接写死了调⽤时报错,那么为什么要这样写呢?原因也很简单,如果多个线程对这个集合增删,那么调⽤⽅就全乱了,所以采⽤了直接报错,快速失败的⽅法来解决问题。

总结:返回null,返回new ArrayList<>(),返回EMPTY_LIST 。

null肯定是不推荐的,那么是新建⼀个List还是返回空List呢?这要根据接⼝的性能要求,如果性能要求⾼返回EMPTY_LIST,否则新建⼀个对象。

返回空List的⽅式⽅式⼀:new ArrayList() JDK1.8已经优化了,默认构造函数创建的list内部共享空数组,⾸次插⼊数据时才会扩容到默认容量;private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};public ArrayList() {this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}⽅式⼆:new ArrayList(0)private static final Object[] EMPTY_ELEMENTDATA = {};public ArrayList(int initialCapacity) {if (initialCapacity > 0) {this.elementData = new Object[initialCapacity];} else if (initialCapacity == 0) {this.elementData = EMPTY_ELEMENTDATA;} else {throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity);}}⽅式三:Collections.emptyList()(推荐)特点:不可变,安全/*** The empty list (immutable). This list is serializable.** @see #emptyList()*/@SuppressWarnings("rawtypes")public static final List EMPTY_LIST = new EmptyList<>();/*** Returns an empty list (immutable). This list is serializable.** <p>This example illustrates the type-safe way to obtain an empty list: * <pre>* List<String> s = Collections.emptyList();* </pre>** @implNote* Implementations of this method need not create a separate <tt>List</tt> * object for each call. Using this method is likely to have comparable* cost to using the like-named field. (Unlike this method, the field does* not provide type safety.)** @param <T> type of elements, if there were any, in the list* @return an empty immutable list** @see #EMPTY_LIST* @since 1.5*/@SuppressWarnings("unchecked")public static final <T> List<T> emptyList() {return (List<T>) EMPTY_LIST;}/*** @serial include*/private static class EmptyList<E>extends AbstractList<E>implements RandomAccess, Serializable {private static final long serialVersionUID = 8842843931221139166L; public Iterator<E> iterator() {return emptyIterator();}public ListIterator<E> listIterator() {return emptyListIterator();}public int size() {return 0;}public boolean isEmpty() {return true;}public boolean contains(Object obj) {return false;}public boolean containsAll(Collection<?> c) { return c.isEmpty(); }public Object[] toArray() { return new Object[0]; }public <T> T[] toArray(T[] a) {if (a.length > 0)a[0] = null;return a;}public E get(int index) {throw new IndexOutOfBoundsException("Index: "+index);}public boolean equals(Object o) {return (o instanceof List) && ((List<?>)o).isEmpty();}public int hashCode() { return 1; }@Overridepublic boolean removeIf(Predicate<? super E> filter) {Objects.requireNonNull(filter);return false;}@Overridepublic void replaceAll(UnaryOperator<E> operator) {Objects.requireNonNull(operator);}@Overridepublic void sort(Comparator<? super E> c) {}// Override default methods in Collection@Overridepublic void forEach(Consumer<? super E> action) {Objects.requireNonNull(action);}@Overridepublic Spliterator<E> spliterator() { return Spliterators.emptySpliterator(); }// Preserves singleton propertyprivate Object readResolve() {return EMPTY_LIST;}}以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.本讲内容:集合collection
(数组和集合90%功能相似,但是最大的区别是,数组在初始化的时候必须确定大小,而集合不用,而且集合是一堆的类,使用起来非常方便。


讲集合collection之前,我们先分清三个概念:
1colection 集合,可用来存储任何对象的一种数据结构(容器)。

2Collection 集合接口,指的是,是Set、List 和Queue 接口的超类接口
3Collections 集合工具类,指的是类。

SCJP考试要求了解的接口有:Collection , Set , SortedSet , List , Map , SortedMap , Queue , NavigableSet , NavigableMap, 还有一个Iterator 接口也是必须了解的。

SCJP考试要求了解的类有:HashMap , Hashtable ,TreeMap , LinkedHashMap , HashSet , LinkedHashSet ,TreeSet , ArrayList , Vector , LinkedList , PriorityQueuee , Collections , Arrays
下面给出一个集合之间的关系图:
上图中加粗线的ArrayList 和HashMap 是我们重点讲解的对象。

下面这张图看起来层级结构更清晰些。

我们这里说的集合指的是小写的collection,集合有4种基本形式,其中前三种的父接口是Collection。

4List 关注事物的索引列表
5Set 关注事物的唯一性
6Queue 关注事物被处理时的顺序
7Map 关注事物的映射和键值的唯一性
一、Collection 接口
Collection接口是Set 、List 和Queue 接口的父接口,提供了多数集合常用的方法声明,包括add()、remove()、contains() 、size() 、iterator() 等。

add(E e) 将指定对象添加到集合中
remove(Object o) 将指定的对象从集合中移除,移除成功返回true,不成功返回false
contains(Object o) 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase
size() 返回集合中存放的对象的个数。

返回值为int
clear() 移除该集合中的所有对象,清空该集合。

iterator() 返回一个包含所有对象的iterator对象,用来循环遍历
toArray() 返回一个包含所有对象的数组,类型是Object
toArray(T[] t) 返回一个包含所有对象的指定类型的数组
我们在这里只举一个把集合转成数组的例子,因为Collection本身是个接口所以,我们用它的实现类ArrayList做这个例子:例子1:
package edu.xjfu;
import ;
import ;
public class CollectionTest {
public static void main(String[] args) {
String a = "a", b = "b", c = "c";
Collection list = new ArrayList();
list.add(a);
list.add(b);
list.add(c);
String[] array = (String[]) list.toArray(new String[1]);
for (String s : array) {
;
}
}
}
二、几个比较重要的接口和类简介
1、List接口
List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index) 、add(int index, Object o) 、indexOf(Object o) 。

ArrayList可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。

LinkedList中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。

Vector是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用
2、Set接口
Set关心唯一性,它不允许重复。

HashSet当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。

LinkedHashset当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时可采用此类。

TreeSet当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。

(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。


3、Queue接口
Queue用于保存将要执行的任务列表。

LinkedList同样实现了Queue接口,可以实现先进先出的队列。

PriorityQueue用来创建自然排序的优先级队列。

4、Map接口(key,value)
Map关心的是唯一的标识符。

他将唯一的键映射到某个元素。

当然键和值都是对象。

HashMap当需要键值对表示,又不关心顺序时可采用HashMap。

Hashtable注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。

LinkedHashMap当需要键值对,并且关心插入顺序时可采用它。

TreeMap当需要键值对,并关心元素的自然排序时可采用它。

三、ArrayList的使用
ArrayList是一个可变长的数组实现,读取效率很高,是最常用的集合类型。

1、ArrayList的创建
在Java5版本之前我们使用:
1 List list =new ArrayList();
在Java5版本之后,我们使用带泛型的写法:
1 List<String> list =new ArrayList<String>();
上面的代码定义了一个只允许保存字符串的列表,尖括号括住的类型就是参数类型,也成泛型。

带泛型的写法给了我们一个类型安全的集合。

关于泛型的知识可以自行查询baidu。

2、ArrayList的使用:
01 List<String> list =new ArrayList<String>();
02 list.add("nihao!");
03 list.add("hi!");
04 list.add("konikiwa!");
05 list.add("hola");
06 list.add("Bonjour");
07 ;
08 ;
09 "hi!"));
10 ;
关于List接口中的方法和ArrayList中的方法,大家可以看看JDK中的帮助。

3、基本数据类型的的自动装箱:
我们知道集合中存放的是对象,而不能是基本数据类型,在Java5之后可以使用自动装箱功能,更方便的导入基本数据类型。

1 List<Integer> list =newArrayList<Integer>();
2 list.add(new Integer(42));
3 list.add(43);
4、ArrayList的排序:
ArrayList本身不具备排序能力,但是我们可以使用Collections类的sort方法使其排序。

我们看一个例子:
package edu.xjfu;
import ;
import ;
import ;
public class ListTest {
public static void main(String[] args) {
List<String> myArrayList=new LinkedList<String>();
myArrayList.add("小强3");
myArrayList.add("小强1");
myArrayList.add("小强2");
myArrayList.add("小强5");
myArrayList.add("小强4");
"排序前:"+myArrayList);
Collections.sort(myArrayList);
"排序后:"+myArrayList);。

相关文档
最新文档