可能重复:
java中的排序集合
我想知道Java中是否有内置类允许我添加自动排序的元素.如果两个元素的排名相同,则排序应保留添加顺序.我认为这将是一个优先级队列,但不应该"弹出"元素,我希望它们留在列表中.
显然我可以自己实现这个,但我宁愿使用Java语言实现的东西(更少的bug测试/对未来的项目也很好,而不是导入我自己的代码).
如果在语言中没有这样的东西,我也会对第三方来源感兴趣.
void wait(int timeInMs)
{
struct timespec timeToWait;
timeToWait.tv_sec = 5;
timeToWait.tv_nsec = timeInMs*1000;
int rt;
pthread_mutex_lock(&fakeMutex);
rt = pthread_cond_timedwait(&fakeCond, &fakeMutex, &timeToWait);
pthread_mutex_unlock(&fakeMutex);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码尝试让一个线程等待一下,但它根本不起作用.没有错误,它只是不会使程序执行得更慢.
我想也许每个线程都需要拥有它自己的条件和互斥量,但这对我来说真的没有意义.
我不确定我到底要问的是什么.我希望能够制作一些代码,这些代码可以轻松地获取初始和最终状态以及一些规则,并确定到达那里的路径/选择.
例如,想想像星际争霸这样的游戏.要建造一个工厂,我需要建造一个军营和一个指挥中心.所以,如果我什么都没有,我想要一个工厂,我可能会说 - >指挥中心 - >军营 - >工厂.每件事都需要时间和资源,这应该在路径中加以注意和考虑.如果我想要我的工厂在5分钟,那么如果我想要它在10点那么选项会更少.
此外,引擎应该能够计算可用资源并有效地利用它们.这三座建筑物可能需要600块矿物,但是当它有200块(或者是它的成本)时,发动机应该规划指挥中心.
这最终将需要类似于5分钟的10名海军陆战队员,6:30的步兵武器升级,10分钟的30名海军陆战队员,11号工厂等等......
那么,我该如何做这样的事呢?我的第一个想法是使用一些程序性语言并从头开始做出所有决定.我可以模拟系统和分支并做出不同的选择.最终,一些选择很快就会使得以后无法达到目标(如果我建立20个供应仓库,我可能不会按时建造那个工厂.)
那么我认为不是为此设计的函数式语言?我试着写一些序言,但我一直遇到时间和距离计算等问题.而且我不确定退回"计划"的最佳方法.
我以为我可以写:
depends_on(factory, barracks)
depends_on(barracks, command_center)
builds_from(marine, barracks)
build_time(command_center, 60)
build_time(barracks, 45)
build_time(factory, 30)
minerals(command_center, 400)
...
build(X) :-
depends_on(X, Y),
build_time(X, T),
minerals(X, M),
...
Run Code Online (Sandbox Code Playgroud)
这是我感到困惑的地方.我不确定如何构造这个函数和一个查询来获得任何接近我想要的东西.我不得不以某种方式考虑在建造时间和其他可能的额外黄金路径中收集矿物的比率.如果我在10分钟内只需要1个海军陆战队员,我希望发动机能够产生很多计划,因为有很多方法可以在10分钟内结束1个海军陆战队员(可能会在很多人之后将其切断,不知道你是如何做到这一点的. ).
我正在寻找有关如何继续沿着这条路走下去或就其他选择提出建议的建议.我找不到任何比河内塔和人工智能的例子更有用的东西,所以即使是一些很好的文章解释如何使用prolog做真实的东西也会很棒.如果我能以一种有用的方式设置这些规则如何让我得到"计划"prolog想出的方法(解决查询的方法)除了写入像河内例子的所有塔一样的stdout吗?或者这是首选方式?
我的另一个问题是,我的主要代码是ruby(可能还有其他语言),与prolog通信的选项是从ruby中调用我的prolog程序,从prolog中访问虚拟文件系统,或某种数据库结构(不太可能) ).我正在使用SWI-Prolog atm,我会更好地在Ruby中以程序方式执行此操作,还是使用像prolog或haskall这样的函数式语言来构建它是否值得进行额外的集成?
如果不清楚我很抱歉,我感谢任何帮助的尝试,我会重新说出不清楚的事情.
我想知道如何制作一个程序,可以输出到控制台的每一行,而不只是输出一行要添加到底部.如何控制整个控制台,以便我可以编写基于控制台的应用程序?