请用通俗语言简单介绍
java.util.Map
和
java.util.Set表示不是十分能看懂程序员手册,所以求简单介绍。
具体怎么用?Map和Set分别是什么样的变量?
问这个问题是因为最近在看代码如下:
public abstract void addEdge(T nodeA, T nodeB, Map<String, Object> edgeProperties);
public abstract Set<Tuple<T>> getEdges();
不甚理解,求解释,谢谢。
java.util.Map
和
java.util.Set表示不是十分能看懂程序员手册,所以求简单介绍。
具体怎么用?Map和Set分别是什么样的变量?
问这个问题是因为最近在看代码如下:
public abstract void addEdge(T nodeA, T nodeB, Map<String, Object> edgeProperties);
public abstract Set<Tuple<T>> getEdges();
不甚理解,求解释,谢谢。
Map存放的是键值对。
Set<Tuple<T>>是类型
还有如果说set和map是接口,接口不是用来implements的么?
为什么这里是返回类型?public abstract Set<Tuple<T>> getEdges();
我是否可以理解为,这里返回了一堆没有重复的tuple类型的值?
为什么这里是返回类型?public abstract Set<Tuple<T>> getEdges();
我是否可以理解为,这里返回了一堆没有重复的tuple类型的值?返回了一个实现了接口set的实例,这个实例是一个集合,集合里面是存放着一堆类型为Tuple,而其中返回的这个实例,拥有set的特性(里面的元素不重复)
其实就是因为非常不善于看API或者程序员手册之类的东西才会在这里求教TT
Map是键值对,map.put(object,object);前面是键,后面是值。Map接口的实现类主要有HashMap,ThreeMap。
Map<String , Integer>像这样子是泛型,表示你想map里面放键值对时,键只能是String,值只能是int类型的。
虽然还是很简单的结构,不过不知道为什么觉得数据结构好伟大><|||
刚刚又看了很多代码大约对set和map有了更多的理解,现在的问题是:之前一直有人说set和map是接口,对这点我很困惑。
我看了这些代码后的理解是set和map是某些数据结构的类。里面存放很多数据。
如果是接口的话不是只有方法没有存放数据的变量么?还有,下面这个:
public Set<T> getNodes() {
return new HashSet<T>(nodes.keySet());
}
为什么要返回new HashSet?而不是直接return nodes.keySet();
是不是只是多了一个集合里面数据的排序?如果不变成hash仅仅是set就不能一个一个读出数据了么?
这个中存的是键值对,就是一对数据
java.util.Set
这里面是一个数据,而且不能重复并且没有顺序
public abstract void addEdge(T nodeA, T nodeB, Map<String, Object> edgeProperties);
这个意思是这个方法有三个参数,第一个是T类型的nodeA,第二个一样,第三个是Map类型的,用泛型贵的了map中的第一个也就是键的类型为String,值得类型为Objectpublic abstract Set<Tuple<T>> getEdges();
这个一样,同样用泛型限制参数的类型,只是用了两次泛型,泛型也就是<T>表示穿过去的参数必须是T类型的,T可以是所有的数据类型,也可以是自己创建的类的类型
其实Map和set的区别就是一个是键值对形式存储,一个是集合形式存储。
所谓键值对就是在Map中有两个属性:Key和value,一个Key唯一的对应了一个value,所以Map有一个get方法,在get的时候只需将Key值传递过去,那么它就会返回该Key对应的value,但是此时要注意的是key在Map里面是唯一的,而不同的Key可以对应相同的value,这就是Map的特性
而set是一个集合,类似于List,但是它与List的区别就是在list中可以存放相同的值对此,如:可以add同一个对象多次,并且多次添加相同的对象的每个对象都在list中占一个记录,而set不同,它的集合中的值都是唯一的,当你添加相同的多次的时候它将以前的覆盖掉,保留最新的值。
以上是纯属个人对Map和set的理解,希望对楼主有帮助