小编Tra*_*svi的帖子

如何计算多个重叠长方体的总体积

我有一个长方体列表,由它们的左下后角和右上角前角的坐标定义,边缘平行于轴。坐标是双精度值。这些长方体密集,会与一个或多个其他长方体重叠,甚至完全包含其他长方体。

我需要计算所有给定长方体所包含的总体积。重叠(甚至多次)的区域应该只计算一次。

例如,卷:

  1. ((0,0,0)(3,3,3))
  2. ((0,1,0) (2,2,4))
  3. ((1,0,1) (2,5,2))
  4. ((6,6,6)(8,8,8))

总体积为 27 + 1 + 2 + 8 = 38。有没有一种简单的方法可以做到这一点(在 O(n^3) 时间内或更好?)?

algorithm

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

Java Swing:列出模型和集合

我当前正在编写一个程序,该程序在GUI方面和数据存储方面之间有很多代码重复,并且我想知道我提出的解决方案是否遵循可接受的设计原则。

基本上,我有一些数据对象,它们有一个包含更多信息的列表。然后,GUI显示该对象,还有一个JList,显示数据对象列表中的所有信息。在GUI中,用户可以在对象列表中添加或删除信息,这在JList中是直观体现的。

但是,这导致我不得不分别维护GUI JList和对象List:

private void addInformation(String s) {
    this.listmodel.addElement(s);
    this.dataObject.getList().add(s);
}
Run Code Online (Sandbox Code Playgroud)

(显然,这是一个非常简单的示例,但您明白了)。这也意味着我占用两个列表的内存是原来的两倍。创建一个既实现ListModel又实现List接口的类,然后只需要更新单个组合的list / listmodel,对我来说是否可以接受?我仍在念大学,我想使这个项目在他人的可维护性和坚持最佳实践方面达到我所能做的最好。

java collections swing model jlist

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

Java反射和检查异常

我有一个方法,我想通过反思来调用.该方法对其参数进行了一些不同的检查,并且可以抛出NullPointer和IllegalArgument异常.

通过Reflection调用方法也会抛出需要捕获的IllegalArgument和NullPointer异常.有没有办法确定异常是由反射Invoke方法还是由方法本身引起的?

java reflection exception-handling

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

并行读写多个文件

我需要用Java编写一个程序,它将读取目录树中相对较多的(~50,000)个文件,处理数据,并在单独的(平面)目录中输出处理过的数据.

目前我有这样的事情:

private void crawlDirectoyAndProcessFiles(File directory) {
  for (File file : directory.listFiles()) {
    if (file.isDirectory()) {
      crawlDirectoyAndProcessFiles(file);
    } else { 
      Data d = readFile(file);
      ProcessedData p = d.process();
      writeFile(p,file.getAbsolutePath(),outputDir);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

可以说,为了便于阅读,每个方法都被删除和修剪,但它们都可以正常工作.整个过程工作正常,但速度很慢.数据处理通过远程服务进行,需要5-15秒.乘以50,000 ...

我之前从未做过任何多线程的事情,但我认为如果我这样做,我可以获得一些非常好的速度提升.任何人都可以指出我如何有效地并行化这种方法?

java parallel-processing

4
推荐指数
2
解决办法
2万
查看次数

设计范例,用于从XML文件中实例化对象

对于uni赋值我正在编写一个java程序,它需要保存对象层次结构并将其加载到XML文件中.例如,程序创建一个Zoo类,其中包含Animals的子类列表,将其保存到XML,并在下次用户启动程序时再次加载.

该文件可能看起来像

<Zoo>
    <Animals>
        <Lion>
            <name>Leo</name>
            <age>5</age>
            <roar>fearsome</roar>
        </Lion>
        <Elephant>
            <name>Dumbo</name>
            <age>10</age>
            <ears>let him fly</ears>
        </Elephant>
    </Animals>
</Zoo>
Run Code Online (Sandbox Code Playgroud)

我需要支持少量有限数量的动物子类(~5).每个动物的子类都有各自的属性(如Ears和Roar).我很困惑对象创建和文件创建的最佳设计模式是什么.

目前,我有一个类XMLCreator,有方法,例如void createZooElement(Zoo),void createLionElement(Lion)等等等等,并与XMLReader类private Zoo createZoo(File),private Lion createLionObject(Element).

如果这是您希望将来由其他人维护的代码,这是一个很好的方法吗?或者每个对象应该有一个构造函数方法,它将File/Element作为参数,另一个方法返回File/XMLElement?哪种封装/可维护性最强?

java design-patterns

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