小编jav*_*ian的帖子

不区分大小写的比较器会破坏我的TreeMap

一个Comparator在我使用我TreeMap打破了我的意图的行为TreeMap.看下面的代码:

TreeMap<String, String> treeMap = new TreeMap<>(new Comparator<String>() {
    public int compare(String o1, String o2) {
        return o1.toLowerCase().compareTo(o2.toLowerCase());
    }
});
treeMap.put("abc", "Element1");
treeMap.put("ABC", "Element2");
Run Code Online (Sandbox Code Playgroud)

我认为我所做的是我创建了一个按键排序的地图,不区分大小写.两个不同的元素具有不相等的键(abcABC),其比较将返回0.我期待这两个元素的随机排序.然而,命令:

System.out.println("treeMap: " + treeMap);
Run Code Online (Sandbox Code Playgroud)

导致:

treeMap: {abc=Element2}
Run Code Online (Sandbox Code Playgroud)

钥匙abc已重新分配价值Element2!

任何人都可以解释这是怎么发生的,如果它是一个有效的,记录在案的行为TreeMap

java comparator

20
推荐指数
2
解决办法
2681
查看次数

画布'drawLine和drawRect不包括结束位置?

令我惊讶的是,我刚刚发现drawLine和drawRect不包括结束位置,即:

canvas.drawLine(100, 100, 100, 100, paint);
Run Code Online (Sandbox Code Playgroud)

要么

RectF rect = new RectF(100, 100, 100, 100);
canvas.drawRect(rect, paint);
Run Code Online (Sandbox Code Playgroud)

不会画任何东西.

我的油漆定义如下:

Paint paint = new Paint();
paint.setAntiAlias(false);
paint.setStyle(Paint.Style.FILL);
return paint;
Run Code Online (Sandbox Code Playgroud)

我已经尝试将我的绘画定义为FILL_AND_STROKE,但它无济于事.

Android的drawPaint()javadoc甚至没有列出stopX和stopY参数!

所以,如果我想绘制一条完全从beginY到endY(包括)的垂直线,我必须执行以下操作:

canvas.drawLine(constX, beginY, constX, endY + 1)
Run Code Online (Sandbox Code Playgroud)

请注意,我没有将1添加到结束X位置,仅添加到结尾Y(xstays与我想要的垂直线相同).

我的设备是HTC SENSE.

编辑:西蒙,你是对的,而不是问一个问题,我只是试图分享我的惊讶,因为Android在基本的绘图这样的基本情况下没有做文档所说的,并且确保我没有'在我的路上做任何愚蠢的错误.

为了让自己更清楚:drawRect的javadoc说:

public void drawRect(float left,float top,float right,float bottom,Paint paint)

使用指定的绘制绘制指定的Rect.矩形将根据绘画中的样式填充或加框.

left - 要绘制的矩形的左侧

top - 要绘制的矩形的顶边

right - 要绘制的矩形的右侧

bottom - 要绘制的矩形的底边

paint - 用于绘制rect的绘画

所以,写作时

canvas.drawRect(x1, y1, x2, y2)
Run Code Online (Sandbox Code Playgroud)

你期望一个角落在(x1,y1)的矩形; (x1,y2); (x2,y1)和(x2,y2).

Android说:错了!他们将在(x1,y1); (x1,y2-1); (x2-1,y1)和(x2-1,y2-1).

对于好奇的:设置画布剪辑:

canvas.clipRect(x1, y1, …
Run Code Online (Sandbox Code Playgroud)

android drawing paint android-canvas

14
推荐指数
1
解决办法
7964
查看次数

标签 统计

android ×1

android-canvas ×1

comparator ×1

drawing ×1

java ×1

paint ×1