今天冷知识百科网小编 端木玉寒 给各位分享hashset有什么用途的知识,其中也会对java集合是什么?(java集合类是什么意思)相关问题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在我们开始吧!
java集合是什么?
Java集合是什么:
Java 中的集合类库可以帮助我们在程序设计中实现传统的数据结构。
Java的集合类是一个用来存放对象的容器,有以下特点:
1、Java集合只能存放对象。加入添加了一个基本数据类型,会被自动装箱后存入集合。
2、集合存放的是多个对象的引用,对象本身是在堆内存中的。
3、集合可以存放不同类型,不限数量的数据类型。
集合分三种:1、Set 2 、List 3、Map,下面进行具体介绍。
扩展链接:
主要内容:
1)手写ArrayList
2)手写单链表
3)手写LinkedList
4)手写HashMap
5)手写HashSet
6)最新并发集合类
学习目标:
1. 掌握手写ArrayList
2. 掌握手写单链表
3. 掌握手写LinkedList
4. 掌握手写HashMap
5. 掌握手写HashSet
6. 理解最新并发集合类底层原理
视频课程小结:
01_集合提升训练_手写ArrayList_get_size_isEmpty_自定义异常
02_集合提升训练_手写ArrayList_构造方法_add
03_集合提升训练_手写ArrayList_toString_iterator
04_集合提升循环_手写单链表_get
05_集合提升训练_手写单链表_add_remove_toString
06_集合提升训练_手写LinkedList
07_集合提升训练_手写LinkedList_添加内存分配图
08_集合提升训练_HashMap的原理和代码准备
09_集合提升训练_手写HashMap的put
10_集合提升训练_手写HashMap的get_toString
11_集合提升训练_手写HashSet
12_集合提升训练_新一代并发集合类
Java中集合到底有什么用?
Java中,集合主要有List、Set和Map,我个人理解集合的主要作用是相当于一个容器,你可以在里面装你希望装的对象,可以是Java内置的类,也可以是自定义的类。再者,这些集合支持一些方便的操作,比如Set可以排除重复,Map可以快速检索等等。
java中,集合类有什么作用??
存储对象用的,例如 你要 打印出 今天 10点 访问你服务器所有人的 ip 用户名 密码 等信息 那么 用户 肯定是一个对象 你就要定义一个集合 每当有一个访问你就把 这个对象放在你的集合里面 当过了10点之后遍历这个集合取出来就行了 集合的数据放在内存中 。说白了他就是用来存储临时数据的。
集合的概念?什么是集合??
集合概念是与非集合概念相对的。数学中,把具有相同属性的事物的全体称为集合在某一思维对象领域,思维对象可以有两种不同的存在方式。一种是同类分子有机结合构成的集合体,另一种是具有相同属性对象组成的类。集合概念与非集合概念分别是对思维对象集合体、对象类的反映。集合体的根本特征,决定集合概念只反映集合体,不反映构成集合体的个体。在不同场合,同一语⋼/p>
java集合 什么情况下分别使用map ,set, list
这是要看你的需求的 当你有一些内容要添加到一个数组里面,但是你前提不知道他有多少个(而可能有非常多个),这个时候你可以用list,比如ArrayList 当你需要一个“集合”的时候(想想什么是集合),就用Set 当你需要映射(映射就是一一对应关系,比如我输入一个字符串,你就给我返回另一个对象)这个时候就用map 这种事情都是在实践中出来的,需要什么用什么,杀鸡不用牛刀,选合适的才是重要的]
java中hashcode()方法有什么作用呢?最好举个例子啊!
hashcode这个方法是用来鉴定2个对象是否相等的。
那你会说,不是还有equals这个方法吗?
不错,这2个方法都是用来判断2个对象是否相等的。但是他们是有区别的。
一般来讲,equals这个方法是给用户调用的,如果你想判断2个对象是否相等,你可以重写equals方法,然后在代码中调用,就可以判断他们是否相等了。简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等。举个例子,有个学生类,属性只有姓名和性别,那么我们可以认为只要姓名和性别相等,那么就说这2个对象是相等的。
hashcode方法一般用户不会去调用,比如在hashmap中,由于key是不可以重复的,他在判断key是不是重复的时候就判断了hashcode这个方法,而且也用到了equals方法。这里不可以重复是说equals和hashcode只要有一个不等就可以了!所以简单来讲,hashcode相当于是一个对象的编码,就好像文件中的md5,他和equals不同就在于他返回的是int型的,比较起来不直观。我们一般在覆盖equals的同时也要覆盖hashcode,让他们的逻辑一致。举个例子,还是刚刚的例子,如果姓名和性别相等就算2个对象相等的话,那么hashcode的方法也要返回姓名的hashcode值加上性别的hashcode值,这样从逻辑上,他们就一致了。
要从物理上判断2个对象是否相等,用==就可以了。
JAVA中几种集合(List、Set和Map)的区别
Java中的集合包括三大类,它们是Set、List和Map。它们都处于java.util包中,Set、List和Map都是接口。Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.Comparator接口来自定义排序方式。List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。
Map的功能方法 :
方法put(Object key, Object value)添加一个“值”(想要得东西)和与“值”相关联的“键”(key)(使用它来查找)。方法get(Object key)返回与给定“键”相关联的“值”。可以用containsKey()和containsValue()测试Map中是否包含某个“键”或“值”。
标准的Java类库中包含了几种不同的Map:HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap。它们都有同样的基本接口Map,但是行为、效率、排序策略、保存对象的生命周期和判定“键”等价的策略等各不相同。执行效率是Map的一个大问题。看看get()要做哪些事,就会明白为什么在ArrayList中搜索“键”是相当慢的。而这正是HashMap提高速度的地方。HashMap使用了特殊的值,称为“散列码”(hash code),来取代对键的缓慢搜索。
“散列码”是“相对唯一”用以代表对象的int值,它是通过将该对象的某些信息进行转换而生成的。所有Java对象都能产生散列码,因为hashCode()是定义在基类Object中的方法。
求助JAVA大神,关于双列集合作为返回值参数进行传递的问题
问题是:你这方法并没有放入集合中啊!!!!!粗心?
public static LinkedHashMap getSongPath(File dir) throws IOException {
//遍历传入的文件夹路径,将所有MP3文件的名字与路径传入双列集合 File[] subFiles = dir.listFiles(); LinkedHashMap lhs = new LinkedHashMap();//所以最大问题就在这里,不是全局,而是方法局部变量,改成类的字段(属性)就行了 for (File subFile : subFiles){ if (subFile.isFile() && subFile.getName().endsWith(".mp3")){ lhs.put(subFile.getName(),subFile); }else if(subFile.isDirectory()){ getSongPath(subFile);//这里递归我没意见,很好,可是递归回来依然调用这个方法,这个方法依然没有加入集合中,既然是递归,就需要将集合定义成全局的,不然在方法运行就初始化了 } } System.out.println(lhs); return lhs;}改进:
LinkedHashMap lhs = new LinkedHashMap();//改成类中的成员public static LinkedHashMap getSongPath(File dir) throws IOException {
//遍历传入的文件夹路径,将所有MP3文件的名字与路径传入双列集合 File[] subFiles = dir.listFiles(); for (File subFile : subFiles){ if (subFile.isFile() && subFile.getName().endsWith(".mp3")){ lhs.put(subFile.getName(),subFile); }else if(subFile.isDirectory()){ getSongPath(subFile);//这里递归我没意见,很好,可是递归回来依然调用这个方法,就需要将集合定义成全局的,不然在方法运行就初始化了 } } System.out.println(lhs); return lhs;},嗯,加入了,刚才看错了,不过递归把集合初始化了