import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.AbstractSet;
public class Entry_1 implements Map.Entry<Integer,String>{
static int index;
public Entry_1(int i){ index=i;}
public Integer getKey(){return index;}
public String getValue(){return "加油!";}
public boolean equals(Object o){
System.out.println("Must invok here?");
throw new UnsupportedOperationException();
}
public  String setValue(String s){
throw new UnsupportedOperationException();
}
//返回内部类EntrySets

public static EntrySets getf(int i) {
return new EntrySets(i);  
}
//定义内部类EntrySets

static  class EntrySets extends AbstractSet<Map.Entry<Integer, String>>{
int size;
public EntrySets(int i){
size=i;
}
public int size() {
return 0;
}
int count=0;//为什么这里改成小于等于0的数时有输出,把count改成大于0时输出都是空的啊?
//内部类迭代器方法
public Iterator<Map.Entry<Integer, String>> iterator() {
return new Iterator<Map.Entry<Integer, String>>(){

public boolean hasNext(){
return count<=size;
}
public Map.Entry<Integer, String> next(){
////////////////////////System.out.println(size);
count++;
return new Entry_1(count);
}
public void remove(){

}
};
}


}//////////////////////////////////////EntrySets

@SuppressWarnings("serial")
static Map<Integer,String> f(int in){
return new HashMap<Integer,String>(){
public Set<Map.Entry<Integer,String>> entrySet(){
return getf(index);
}
};

}
public static void main(String[]args){
for(int i:new Integer[]{5,10,2,3,4,5,6,7,8,}){
System.out.println(f(i));
}
}
}
/////想不通啊。

解决方案 »

  1.   

    import java.util.Iterator;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.Set;
    import java.util.AbstractSet;
    public class Entry_1 implements Map.Entry<Integer,String>{
    static int index;
    public Entry_1(int i){ index=i;}
    public Integer getKey(){return index;}
    public String getValue(){return "加油!";}
    public boolean equals(Object o){
    System.out.println("Must invok here?");
    throw new UnsupportedOperationException();
    }
    public  String setValue(String s){
    throw new UnsupportedOperationException();
    }
    //返回内部类EntrySets

    public static EntrySets getf(int i) {
    return new EntrySets(i);  
    }
    //定义内部类EntrySets

    static  class EntrySets extends AbstractSet<Map.Entry<Integer, String>>{
    int size;
    public EntrySets(int i){
    size=i;
    }
    public int size() {
    return 0;
    }
    int count=0;
    //内部类迭代器方法
    public Iterator<Map.Entry<Integer, String>> iterator() {
    return new Iterator<Map.Entry<Integer, String>>(){

    public boolean hasNext(){
    return count<=size;
    }
    public Map.Entry<Integer, String> next(){
    ////////////////////////System.out.println(size);
    count++;
    return new Entry_1(count);
    }
    public void remove(){

    }
    };
    }


    }//////////////////////////////////////EntrySets

    @SuppressWarnings("serial")
    static Map<Integer,String> f(int in){
    return new HashMap<Integer,String>(){
    public Set<Map.Entry<Integer,String>> entrySet(){
    return getf(index);
    }
    };

    }
    public static void main(String[]args){
    for(int i:new Integer[]{5,10,2,3,4,5,6,7,8,}){
    System.out.println(f(i));
    }
    }
    }
      

  2.   

    第一次发帖,为什么显示不出红看点的格式啊,import java.util.Iterator;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.Set;
    import java.util.AbstractSet;
    public class Entry_1 implements Map.Entry<Integer,String>{
    static int index;
    public Entry_1(int i){ index=i;}
    public Integer getKey(){return index;}
    public String getValue(){return "加油!";}
    public boolean equals(Object o){
    System.out.println("Must invok here?");
    throw new UnsupportedOperationException();
    }
    public  String setValue(String s){
    throw new UnsupportedOperationException();
    }
    //返回内部类EntrySets

    public static EntrySets getf(int i) {
    return new EntrySets(i);  
    }
    //定义内部类EntrySets

    static  class EntrySets extends AbstractSet<Map.Entry<Integer, String>>{
    int size;
    public EntrySets(int i){
    size=i;
    }
    public int size() {
    return 0;
    }
    int count=0;
    //内部类迭代器方法
    public Iterator<Map.Entry<Integer, String>> iterator() {
    return new Iterator<Map.Entry<Integer, String>>(){

    public boolean hasNext(){
    return count<=size;
    }
    public Map.Entry<Integer, String> next(){
    ////////////////////////System.out.println(size);
    count++;
    return new Entry_1(count);
    }
    public void remove(){

    }
    };
    }


    }//////////////////////////////////////EntrySets

    @SuppressWarnings("serial")
    static Map<Integer,String> f(int in){
    return new HashMap<Integer,String>(){
    public Set<Map.Entry<Integer,String>> entrySet(){
    return getf(index);
    }
    };

    }
    public static void main(String[]args){
    for(int i:new Integer[]{5,10,2,3,4,5,6,7,8,}){
    System.out.println(f(i));
    }
    }
    }
      

  3.   

    ;//为什么这里改成小于等于0的数时有输出,把count改成大于0时输出都是空的啊?
    中间那里,代码为什么发不出格式的,第一次发帖,不好意思啊,
      

  4.   

    有人在吗,教我发出格式的代码吧,这个列子我本来就对Map.Entry不太懂,它到底是Collection类型,还是依旧是Map形式?是个集合类还是就是包含一个元素的类呢?
      

  5.   

    下面代码中的参数in没传给getf方法,是故意这么写的么, 根据这个debug一下吧;@SuppressWarnings("serial")
    static Map<Integer,String> f(int in){
    return new HashMap<Integer,String>(){
    public Set<Map.Entry<Integer,String>> entrySet(){
    return getf(index);
    }
    };
      

  6.   


    你把count改成大于0,hashNext将返回false所以不在对Map进行迭代,当然不会有属性值输出。
    如果你把count改成大于0,也把index改成相应的数,就可以了。另外,发帖的时候,文章内容右侧的工具栏里,有个图片上有"#"符号,你点击,选择语言,然后把代码嵌里就可以发代码出来了。