有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Iterable作为返回类型为我带来了一些错误

import java.util.AbstractList;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
import java.lang.Iterable;

public class Iterable<Integer> mergeKSortedIterators(List<Iterator<Integer>> Iters){

        Queue<newIter> minHeap = new PriorityQueue<newIter>();
        AbstractList<Integer> result = new ArrayList<Integer>();
        for(Iterator<Integer> iter : Iters){
            if(iter.hasNext()){
                minHeap.add(new newIter(iter.next(), iter));
            }
        }

        while(!minHeap.isEmpty()){
            newIter newiter = minHeap.poll();
            result.add(newiter.getValue());
            if(newiter.hasNext()){
                minHeap.add(newiter);
            }
        }
        return result;
    }

    class newIter implements Comparable<newIter>{
        private Integer value;
        private Iterator<Integer> iter;
        public newIter(Integer val, Iterator<Integer> it){
            this.value = val;
            this.iter = it;
        }
        public Integer getValue(){
            return this.value;
        }
        public boolean hasNext(){
            if(iter.hasNext()){
                value = iter.next();
                return true;
            }
            return false;
        }

        public int compareTo(newIter a){
            return value - a.getValue();
        }
    }

我试图消除所有语法错误,但这一行仍然有来自eclipse的红色卷曲线:

公共类Iterable Mergeksortedirators(列表>;ITER){

还有这句话:

" return value - a.getValue();"

谁能给我点启发吗?非常感谢


共 (1) 个答案

  1. # 1 楼答案

    类规范不正确。 mergelSortedIterators是一种方法

    import java.util.AbstractList;
    import java.util.Iterator;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.PriorityQueue;
    import java.util.Queue;
    
    public class User {
        public Iterable<Integer> mergeKSortedIterators(List<Iterator<Integer>> Iters){
    
    
            Queue<newIter> minHeap = new PriorityQueue<newIter>();
            AbstractList<Integer> result = new ArrayList<Integer>();
            for(Iterator<Integer> iter : Iters){
                if(iter.hasNext()){
                    minHeap.add(new newIter(iter.next(), iter));
                }
            }
    
            while(!minHeap.isEmpty()){
                newIter newiter = minHeap.poll();
                result.add(newiter.getValue());
                if(newiter.hasNext()){
                    minHeap.add(newiter);
                }
            }
            return result;
        }
    
        class newIter implements Comparable<newIter>{
            private Integer value;
            private Iterator<Integer> iter;
            public newIter(Integer val, Iterator<Integer> it){
                this.value = val;
                this.iter = it;
            }
            public Integer getValue(){
                return this.value;
            }
            public boolean hasNext(){
                if(iter.hasNext()){
                    value = iter.next();
                    return true;
                }
                return false;
            }
    
            public int compareTo(newIter a){
                return value - a.getValue();
            }
        }
    }