问题列表 - 第36442页

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

在给定迭代器的情况下使用for-each循环的惯用方法?

当增强的for循环(foreach循环)被添加到Java时,它可以使用数组或目标Iterable.

for ( T item : /*T[] or Iterable<? extends T>*/ ) {
    //use item
}
Run Code Online (Sandbox Code Playgroud)

这对于仅实现一种迭代类型的Collection类非常有用,因此只有一个iterator()方法.

但是我发现自己非常沮丧地想要使用Collection类中的非标准迭代器.例如,我最近试图帮助某人使用a Deque作为LIFO /堆栈,然后按FIFO顺序打印元素.我被迫这样做:

for (Iterator<T> it = myDeque.descendingIterator(); it.hasNext(); ) {
   T item = it.next();
   //use item
}
Run Code Online (Sandbox Code Playgroud)

我失去了for-each循环的优点.这不仅仅是击键.如果我不需要,我不喜欢暴露迭代器,因为很容易犯it.next()两次调用等错误.

理想情况下,我认为for-each循环应该也接受了Iterator.但事实并非如此.那么在这些情况下是否存在使用for-each循环的惯用方法?我也很想听到使用像Guava这样的常见集合库的建议.

我能想出的最好的帮助方法/类是:

for ( T item : new Iterable<T>() { public Iterator<T> iterator() { return myDeque.descendingIterator(); } } ) {
    //use item
}
Run Code Online (Sandbox Code Playgroud)

哪个不值得使用.

我很想看到番石榴有类似的东西Iterables.wrap,但没有找到类似的东西.显然,我可以通过类或辅助方法滚动我自己的Iterator包装器.还有其他想法吗?

编辑:作为旁注,任何人都可以给出一个有效的理由,说明为什么增强的for循环不应该只接受一个Iterator?让我使用当前的设计可能会有很长的路要走.

java foreach guava

32
推荐指数
4
解决办法
9749
查看次数

如何使用Python读取文件夹中的文件数?

如何使用Python读取特定文件夹中的文件数?示例代码真棒!

python file-io

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

Dao层中的Spring Session用户信息检索

我有一个java应用程序,Spring框架,tomcat上的hibernate,基本上几乎没有安全性,除了登录和注销功能(没有弹簧安全性)

我可以通过以下方式访问控制器中的用户信息:

// where request is HttpServletRequest
 HttpSession session = request.getSession(true);
 SystemUser user = (SystemUser) session.getAttribute("user");

并做逻辑.但是,我需要在Dao层获取此信息.我实际从数据库中获取数据以检索用户特定数据的位置.一种方法是将"用户"对象传递给服务层,然后将服务层传递给dao层.但这是一项相当大的工作.

我想知道Spring中是否有一种方法可以访问Dao层中的会话对象?或以任何其他方式检索用户特定数据.

java security session spring

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

Java日历添加年份不起作用

请关注我:

我只是想在当前日期添加10年,然后从中减去过期日期以返回年数:

public int getMaxYears() {
  int max = 0;
  Calendar ten_year_later = Calendar.getInstance();
  ten_year_later.setTime(new Date());
  ten_year_later.add(Calendar.YEAR, 10);
  Calendar expiration = Calendar.getInstance();
  expiration.setTime(expiration_date);
  max = (int) (ten_year_later.getTimeInMillis() - expiration.getTimeInMillis())/(365 * 24 * 60 * 60 * 1000);
  return max;
}
Run Code Online (Sandbox Code Playgroud)

当我调试它时,日历始终保持在当前年份.

任何人 ?

java calendar

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

如何使用javascript在FULLSCREEN中打开一个新窗口?

我正在使用此代码,但它不起作用,因为新窗口是我的屏幕的一半(1280x800px):

<a href="javascript:void(0);" onClick="window.open('http://www.stackoverflow.com', '', 
'fullscreen=yes');">Open Full Screen Window</a> 
Run Code Online (Sandbox Code Playgroud)

为什么?

html javascript javascript-events

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

MySQL中的多线程?

MySQL操作是多线程的吗?

具体来说,在运行select时,select(或join)算法是否会产生多个线程一起运行?多线程会阻止能够支持很多并发用户吗?

mysql concurrency multithreading computer-science query-optimization

5
推荐指数
2
解决办法
9319
查看次数

Gallio:无法运行测试,因为找不到MSTest可执行文件

我在没有Visual Studio的盒子上安装了最新的Gallio版本3.2.603,它将是我们的CI服务器.NAnt脚本成功构建了.Net 4.0项目,但是当它尝试运行MSTest测试时,会发生以下错误.

[gallio] Gallio NAnt任务 - 版本3.2 build 601

[gallio] [错误]组装XXXXXXXXXXXXXX

[gallio]无法运行测试,因为找不到MSTest可执行文件

我错误地认为Gallio能够在没有安装MSTest可执行文件或任何其他Visual Studio组件的情况下运行MSTest测试吗?

unit-testing mstest gallio

5
推荐指数
2
解决办法
3836
查看次数

项目是否可以包含Visual Studio的其他项目?

我有一个具有以下结构的软件项目.

- Library A
- Library B
- Main program
- Test for Main

我有四个项目文件(csproj),但如果我可以在一个解决方案资源管理器中调试/编译这些项目,那将是一件好事.

  • Visual Studio(特别是2010年)是否支持此功能?

visual-studio-2010 visual-studio

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

使用lazy val缓存字符串表示

我在JAXMag的Scala特殊问题中遇到了以下代码:

package com.weiglewilczek.gameoflife

case class Cell(x: Int, y: Int) {
  override def toString = position
  private lazy val position = "(%s, %s)".format(x, y)
}
Run Code Online (Sandbox Code Playgroud)

lazy val上述代码中的使用是否比下面的代码提供了更多的性能?

package com.weiglewilczek.gameoflife

case class Cell(x: Int, y: Int) {
  override def toString = "(%s, %s)".format(x, y)
}
Run Code Online (Sandbox Code Playgroud)

或者只是一个不必要的优化案例?

scala lazy-evaluation micro-optimization

7
推荐指数
3
解决办法
1604
查看次数