Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-包含整数列表的树集?_Java_List_Sorting_Set - Fatal编程技术网

Java-包含整数列表的树集?

Java-包含整数列表的树集?,java,list,sorting,set,Java,List,Sorting,Set,我需要一个包含整数列表的集合。每个列表包含2个int值(对于x和y坐标),我希望能够实现某种比较方法,以便根据列表的第一个值(x值)按升序对集合进行排序,以便第一个值非常大的列表将显示在集合的尾部 因此,与其打印出: [2, 1] [1, 2] [3, 3] [2, 3] 它打印出: [1, 2] [2, 1] [2, 3] [3, 3] 问题是我得到了一个错误: Exception in thread "main" java.lang.ClassCastException: java.

我需要一个包含整数列表的集合。每个列表包含2个int值(对于x和y坐标),我希望能够实现某种比较方法,以便根据列表的第一个值(x值)按升序对集合进行排序,以便第一个值非常大的列表将显示在集合的尾部

因此,与其打印出:

[2, 1]
[1, 2]
[3, 3]
[2, 3]
它打印出:

[1, 2] 
[2, 1]
[2, 3]
[3, 3]
问题是我得到了一个错误:

Exception in thread "main" java.lang.ClassCastException: 
java.util.Arrays$ArrayList cannot be cast to java.lang.Comparable
老实说,我没有太多的经验与排序这样,因为我是一个初学者。任何帮助都会很棒,谢谢

迄今为止的代码:

public class Shape implements Comparator<List<Integer>> {
    private SortedSet<List<Integer>> coords;

    @Override
    public int compare(List<Integer> l1, List<Integer> l2) {
        if (l1.get(0) > l2.get(0))
            return 1;
        else
            return -1;
    }

    public Shape(int shapeID) {
        coords = new TreeSet<List<Integer>>();        
        switch (shapeID) {
            case 1:
                coords.add(Arrays.asList(0, 2));
                coords.add(Arrays.asList(1, 2));
                coords.add(Arrays.asList(3, 2));
                break;
            case 2:
                coords.add(Arrays.asList(1, 1));
                coords.add(Arrays.asList(1, 2));
                coords.add(Arrays.asList(2, 1));
                break;
            case 3:
                coords.add(Arrays.asList(1, 3));
                coords.add(Arrays.asList(2, 1));
                coords.add(Arrays.asList(2, 3));
                break;            
        }
        coords.add(Arrays.asList(2, 2));
    }

    public void rotate() {
        Iterator<List<Integer>> it = coords.iterator();
        // should print out a sorted Set:
        while (it.hasNext()) {          
            System.out.println(it.next());
            // do more stuff here..
        }
    }

    public static void main(String[] args) {
        Shape s = new Shape(2);
        s.rotate();

    }
}
公共类形状实现了Comparator{
专用分拣机;
@凌驾
公共整数比较(列表l1、列表l2){
如果(l1.get(0)>l2.get(0))
返回1;
其他的
返回-1;
}
公共形状(int-shapeID){
coords=新树集();
开关(shapeID){
案例1:
add(Arrays.asList(0,2));
添加(Arrays.asList(1,2));
添加(Arrays.asList(3,2));
打破
案例2:
添加(Arrays.asList(1,1));
添加(Arrays.asList(1,2));
添加(Arrays.asList(2,1));
打破
案例3:
添加(Arrays.asList(1,3));
添加(Arrays.asList(2,1));
添加(Arrays.asList(2,3));
打破
}
添加(Arrays.asList(2,2));
}
公共空间(英文){
迭代器it=coords.Iterator();
//应打印出已排序的集合:
而(it.hasNext()){
System.out.println(it.next());
//在这里做更多的事情。。
}
}
公共静态void main(字符串[]args){
形状s=新形状(2);
s、 旋转();
}
}

树集的构造函数有两种类型,一种是指定显式构造函数,另一种是不指定显式构造函数。在后一种情况下,集合将使用其元素的自然顺序,这要求它们实现
compariable
。这就是为什么会出现运行时异常,这是相对清晰的(一旦理解了背景)


由于无法使ArrayList实现可比较,因此需要提供自己的
比较器
来分配给
坐标
。这对您来说应该是很容易实现的(这只是一个函数,它接受两个对象,并决定哪一个“先到”),并且您可以在其中放入您想要的任何自定义排序逻辑。

对于
树集
,有两种类型的构造函数,一种是指定显式的,另一种是不指定的。在后一种情况下,集合将使用其元素的自然顺序,这要求它们实现
compariable
。这就是为什么会出现运行时异常,这是相对清晰的(一旦理解了背景)


由于无法使ArrayList实现可比较,因此需要提供自己的
比较器
来分配给
坐标
。这对您来说应该是很容易实现的(这只是一个函数,它接受两个对象,并决定哪一个“先到”),并且您可以在其中放入您想要的任何自定义排序逻辑。

对于
树集
,有两种类型的构造函数,一种是指定显式的,另一种是不指定的。在后一种情况下,集合将使用其元素的自然顺序,这要求它们实现
compariable
。这就是为什么会出现运行时异常,这是相对清晰的(一旦理解了背景)


由于无法使ArrayList实现可比较,因此需要提供自己的
比较器
来分配给
坐标
。这对您来说应该是很容易实现的(这只是一个函数,它接受两个对象,并决定哪一个“先到”),并且您可以在其中放入您想要的任何自定义排序逻辑。

对于
树集
,有两种类型的构造函数,一种是指定显式的,另一种是不指定的。在后一种情况下,集合将使用其元素的自然顺序,这要求它们实现
compariable
。这就是为什么会出现运行时异常,这是相对清晰的(一旦理解了背景)


由于无法使ArrayList实现可比较,因此需要提供自己的
比较器
来分配给
坐标
。这对您来说应该很容易实现(它只是一个函数,包含两个对象,并决定哪一个“先到”),您可以在其中放入您想要的任何自定义排序逻辑。

如果您只需要列表中的两个整数,您实际上不需要使用列表,prob。最好使用一个包含to整数的简单对象。如果列表中只需要两个整数,那么实际上不需要使用列表,prob。最好使用一个包含to整数的简单对象。如果列表中只需要两个整数,那么实际上不需要使用列表,prob。最好使用一个包含to整数的简单对象。如果列表中只需要两个整数,那么实际上不需要使用列表,prob。最好使用包含到整数的简单对象,。