请用通俗语言简单介绍
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();
不甚理解,求解释,谢谢。

解决方案 »

  1.   

    Set里面的元素无序,不能重复。
    Map存放的是键值对。
      

  2.   

    set map 是叫接口的东西,并不是变量Map<String, Object> edgeProperties这个才是变量是有点像数组,不过还是有很多区别,这个是关系到数据结构了
      

  3.   

    Set map  都是接口,需要实现  Map<String, Object> edgeProperties是变量,其中edgeProperties是变量名
     Set<Tuple<T>>是类型
      

  4.   

    那Map<String, Object>总是变量类型了吧?就像int a中的int一样?那具体是个什么样子的呢?类似键值对的数组集合?
    还有如果说set和map是接口,接口不是用来implements的么?
    为什么这里是返回类型?public abstract Set<Tuple<T>> getEdges();
    我是否可以理解为,这里返回了一堆没有重复的tuple类型的值?
      

  5.   

    那Map<String, Object>总是变量类型了吧?就像int a中的int一样?那具体是个什么样子的呢?类似键值对的数组集合?是,具体样子还是看API吧还有如果说set和map是接口,接口不是用来implements的么?是,所以这里是有对应的实现
    为什么这里是返回类型?public abstract Set<Tuple<T>> getEdges();
    我是否可以理解为,这里返回了一堆没有重复的tuple类型的值?返回了一个实现了接口set的实例,这个实例是一个集合,集合里面是存放着一堆类型为Tuple,而其中返回的这个实例,拥有set的特性(里面的元素不重复)
      

  6.   

    谢谢,明白个大概了,我继续看看程序的实现,看看能不能完全明白。
    其实就是因为非常不善于看API或者程序员手册之类的东西才会在这里求教TT
      

  7.   

    Set集合,不能有重复。相近的有List,可以有重复。Set实现类主要有HashSet,List的实现类有ArrayList,LinkedList。
    Map是键值对,map.put(object,object);前面是键,后面是值。Map接口的实现类主要有HashMap,ThreeMap。
    Map<String , Integer>像这样子是泛型,表示你想map里面放键值对时,键只能是String,值只能是int类型的。
      

  8.   

    发现了,再读这个代码的过程中越来越发现原来这些就是原先数据结构课上所讲内容的具体实现。
    虽然还是很简单的结构,不过不知道为什么觉得数据结构好伟大><|||
    刚刚又看了很多代码大约对set和map有了更多的理解,现在的问题是:之前一直有人说set和map是接口,对这点我很困惑。
    我看了这些代码后的理解是set和map是某些数据结构的类。里面存放很多数据。
    如果是接口的话不是只有方法没有存放数据的变量么?还有,下面这个:
    public Set<T> getNodes() {
            return new HashSet<T>(nodes.keySet());
        }
    为什么要返回new HashSet?而不是直接return nodes.keySet();
    是不是只是多了一个集合里面数据的排序?如果不变成hash仅仅是set就不能一个一个读出数据了么?
      

  9.   

    java.util.Map---------------------------------
    这个中存的是键值对,就是一对数据
    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可以是所有的数据类型,也可以是自己创建的类的类型
      

  10.   

    1.两个都是接口2.Set里面是一个一个的元素,无序,不能重复;Map里面的元素是以键值对的形式存在,通过“键”来查找值3.Set的底层也是Map实现的,凡是用Set解决的都能用Map代替,但是二者都有各自的用途可以使得有些问题变得简单
      

  11.   

    楼主看的是不是图方面的代码啊?
    其实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的理解,希望对楼主有帮助