小编iul*_*kia的帖子

创建一个忽略大小写的TreeSet

来自Java Collections Framework的Java教程的练习要求使用SortedSet来消除参数的重复,并指定Comparator,以便在排序和标识set元素时忽略大小写.

这是确切的要求:"获取FindDupsexample并修改它以使用SortedSet而不是Set.指定一个Comparator,以便在排序和识别set元素时忽略大小写."

这是FindDupsExample:

import java.util.*;
public class FindDups {
public static void main(String[] args) {
    Set<String> s = new HashSet<String>();
    for (String a : args)
           s.add(a);
           System.out.println(s.size() + " distinct words: " + s);
}
}
Run Code Online (Sandbox Code Playgroud)

我能想出的最多可以达到预期的行为(通过考虑用小型大写字母写一次的单词来消除重复,而另一次用大大写字母作为副本来消除重复)是下面的代码,但我对如何使用比较器毫无头绪和SortedSet.我在我的例子中使用了SortedSet,但我可以很好地使用一个简单的Set:

public class FindDups {
public static void main(String[] args) {
    Set<String> s = new HashSet<String>();
    List<String> list = new ArrayList<String>();
    SortedSet<String> eliminatedDups = null;

    for (String a : args) {
           s.add(a);
           list.add(a.toLowerCase());
    }
    eliminatedDups = new TreeSet<String>(list);

    System.out.println(s.size() + " distinct …
Run Code Online (Sandbox Code Playgroud)

java collections set sortedset comparator

6
推荐指数
1
解决办法
3801
查看次数

在JPanel中绘制钟摆随时间的旋转

我试图在JPanel中描述摆臂随时间的演变.钟摆具有固定节点,而另一个节点基于固定的一个和从文件中取出的一些角度来计算.每隔1秒我就会看到用新坐标重新绘制钟摆.为了描述我的问题,我已经删除了文件和角度计算,请考虑将移动点保存到Points的ArrayList中.

我试图通过从RotateLine对象的构造函数中调用drawRotatingLine()方法来实现逐渐旋转.在drawRotatingLine()方法中,我有一个for循环:

  • 根据PointsList of Points的值设置移动点的坐标
  • 引入1秒的睡眠
  • 并调用repaint()方法

麻烦的是,我只有我的程序绘制初始位置,然后是最后一个,中间的那些没有画画.

从这里到那里把代码放在一起是非常不完整的.请原谅我滥用BufferedImage,Graphics2D,以及在paintComponent(...)方法中对这些对象的调用对我来说并不完全清楚,我只是需要完成这个程序,在我的经验的这个阶段,我发现JPanels上有相当复杂的绘图.

以下是整个代码:

public class RotateLine extends JPanel {

private static final int PREF_W = 600;
private static final int PREF_H = 600;
private static final int X1 = 100;
private static final int Y1 = 100;
private BufferedImage image;
private Graphics2D bufferedGraphics;
private static ArrayList<Point> pointsList;
private static Point p;
private int counter = 0;

public RotateLine () {
    pointsList = new ArrayList<Point>();
    p = new Point(X1, Y1);
    int X2 = 400; …
Run Code Online (Sandbox Code Playgroud)

java bufferedimage jpanel graphics2d paintcomponent

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