小编Sco*_*son的帖子

如果某些值必须晚于其他值出现时如何对列表进行排序,可能会忽略需要"延迟"的此类项的排序顺序

问题

我需要按列表中每个对象的某个属性对列表进行排序.这是大多数语言支持的标准操作.

但是,还有一些要求,即某些项目可能依赖于其他项目,因此,在它们依赖的项目首先出现之前,不得出现在排序列表中,即使这需要违反正常的排序顺序.任何此类"被阻止"的项目应该在项目"阻止"它被添加到输出列表的那一刻出现在列表中.

一个例子

如果我有物品:

[{'a',6},{'b',1},{'c',5},{'d',15},{'e',12},{'f',20},{'g',14},{'h',7}]

通常通过数值对这些进行排序将得到:

[{'b',1},{'c',5},{'a',6},{'h',7},{'e',12},{'g',14},{'d',15},{'f',20}]

但是,如果强制执行以下约束:

  • a取决于e
  • g取决于d
  • c取决于b

然后这个结果无效.相反,结果应该是:

[{'b',1},{'c',5},{'h',7},{'e',12},{'a',6},{'d',15},{'g',14},{'f',20}]

其中b,c,d,e,fh按正确顺序b,c,h,e,df排序; 两者得到了延迟,直到Ëð分别已输出; 并且c不需要延迟,因为它所依赖的值b已经输出了.

我已经尝试过了什么

最初我调查了是否可以使用基本的Java比较器,其中比较器实现类似于:

private Map<MyObject,Set<MyObject>> dependencies; // parent to set of children

public int compare(MyObj x, MyObj y) {
   if (dependencies.get(x).contains(y)) { …
Run Code Online (Sandbox Code Playgroud)

java sorting algorithm

19
推荐指数
1
解决办法
1421
查看次数

Java - 在圆的边缘、顶部和底部绘制文本

我希望在顶部和底部围绕圆的半径绘制轮廓文本,文本的两个部分都面向正确的方向。

如何在AWT中绘制文本周围的轮廓?用 Java 沿着曲线编写文本帮助我创建了代码(如下),该代码将逐个字符地绘制文本,其中每个字符独立旋转(有一些小的图形故障,这将是另一个问题的主题) 。

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class CreateTextStackOverflow {
    private static final int EDGE_GAP = 10;

    public static void main(String[] args) throws IOException {
        BufferedImage bi = new BufferedImage(364,364,BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = (Graphics2D)bi.getGraphics();

        Font font = new Font("Arial",Font.BOLD,48);

        FontMetrics fm = g.getFontMetrics(font);
        int imageWidth = bi.getWidth();
        int …
Run Code Online (Sandbox Code Playgroud)

java graphics image image-processing

2
推荐指数
1
解决办法
1340
查看次数

标签 统计

java ×2

algorithm ×1

graphics ×1

image ×1

image-processing ×1

sorting ×1