当前位置: 首页 > 面试题库 >

同时对两个arrayList排序

顾高翰
2023-03-14
问题内容

说我有两个ArrayLists:

name: [Four, Three, One, Two]
num:  [4, 3, 1, 2]

如果我这样做:Arrays.sort(num),那么我有:

name: [Four, Three, One, Two]
num:  [1, 2, 3, 4]

有什么办法可以对num进行排序,也可以在名称中反映出来,以便最终得到:

name: [One, Two, Three, Four]
num:  [1, 2, 3, 4]

?请帮帮我。我想到了比较器和对象,但几乎一无所知。


问题答案:

您应该以某种方式将字段和字段 关联
到一个类中,然后获得该特定类的实例列表。在此类中,提供一种检查数值的方法。如果您对实例进行排序,则名称字段也将按照您想要的顺序排列。name``num``compareTo()

class Entity implements Comparable<Entity> {
    String name;
    int num;
    Entity(String name, int num) {
        this.name = name;
        this.num = num;
    }
    @Override
    public int compareTo(Entity o) {
        if (this.num > o.num)
            return 1;
        else if (this.num < o.num)
            return -1;
        return 0;
    }
}

测试代码可能是这样的:

public static void main(String[] args) {
    List<Entity> entities = new ArrayList<Entity>();
    entities.add(new Entity("One", 1));
    entities.add(new Entity("Two", 2));
    entities.add(new Entity("Three", 3));
    entities.add(new Entity("Four", 4));
    Collections.sort(entities);

    for (Entity entity : entities)
        System.out.print(entity.num + " => " + entity.name + " ");
}

输出:

1 =>一个2 =>两个3 =>三个4 =>四个



 类似资料:
  • 我的情况是这样的:我有两个带有不同类型对象的arraylists。每个对象都有一个字段名和一个字段日期ArrayList事件、ArrayList事物。我按名称对arraylists进行排序,如果名称相同,则按日期进行排序。 假设ArrayList1具有以下对象:event1 01.12、event1 05.12、event2 04.03、event3 05.05 我如何迭代两个arraylists

  • 问题内容: 在我的作业中,第三步是调用方法merge来合并list1中的两个列表,以便list1 保持排序。 我编写了代码,但效果不佳,输出显示错误,因为排序很重要 问题答案: 假设两个列表都已排序,则只需要一个循环: 如果未排序,则需要两个循环:

  • 问题内容: 我有两个数组列表,声明为: 这两个字段都完全包含“值的相同”,实际上在自然界中是对应的。 我知道我可以遍历这样的循环之一: 但是,我想同时遍历两个列表。我知道它们的尺寸完全相同。我怎么做? 问题答案: 您可以使用:

  • 我有一个我正在制作的纸牌游戏的高分数组列表。对于这个arraylist可以存储的分数数量需要有一个有限的限制,系统的用户可以定义这个限制(假设现在是10个)。arraylist中的对象中的字段是玩家的名称(字符串)、他们的分数(int)和玩家的(几乎)唯一的ID(Long,System.CurrentTimeMillis())。arraylist应该按分数排序,其中分数最低的是最好的。但是,如果a

  • 我有一个Arraylist,我想按两个属性对ArrayList进行排序1。按名称(字母顺序)2。按自定义键 更多解释-: '