如何在Java 8中创建漂亮的迭代

受Adam Bien的博客启发,我想用Java 8将Java 7中的常见迭代替换为更好的迭代。旧代码看起来像这样: void repeatUsingJava7(int times) { for (int i = 0; i < times; i++) { doStuff(); doMoreStuff(); doEvenMoreStuff(); } } ……这不太好。 所以我用Adam Bein的例子替换了它: void repeatUsingJava8(int times) { IntStream.range(0, times).forEach( i -> { doStuff(); doMoreStuff(); doEvenMoreStuff(); } ); } …这是向正确方向迈出的一步,但不会使代码更易于阅读,还会引入一个不需要的变量i ,以及一对额外的花括号。 所以现在我想知道是否有其他方法来编写这个代码,这将使它更好,更容易阅读,主要是使用Java 8。

推荐的JAX-WS框架,用于处理Moxy

目前我正在使用CXF,但由于CXF中的以下代码: // fall back if we’re using another jaxb implementation try { riContext = JAXBUtils.createRIContext(contextClasses .toArray(new Class[contextClasses.size()]), tns); } CXF加载Moxy和RI JAXB上下文(可能依赖于非标准API)。 在我的情况下,启动时间和内存的开销太高了。 我正在寻找一个良好的开源JAX-WS实现(CXF替换),它将按预期与Moxy一起使用。

与hibernate注释的接口

我想知道我将如何能够注释一个界面 @Entity @Table(name = “FOLDER_TABLE”) public class Folder implements Serializable, Hierarchy { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = “folder_id”, updatable = false, nullable = false) private int fId; @Column(name = “folder_name”) private String folderName; @OneToMany(cascade = CascadeType.ALL) @JoinTable(name = “FOLDER_JOIN_FILE_INFORMATION_TABLE”, joinColumns = { @JoinColumn(name = “folder_id”) }, inverseJoinColumns = { @JoinColumn(name = “file_information_id”) }) private […]

在Java中动态生成2个列表的非重复排列对

我一直在看很多关于Java中排列的不同post,但是没有一个符合我的账单,所以我决定发帖。 所以我有2个List ,我需要生成没有重复的所有排列对 ,其中该对的一个元素在第一个列表中,第二个元素在第二个列表中。 例如,如果我有: List l1 = Arrays.asList(new Integer[] {1, 2, 3}); List l1 = Arrays.asList(new Integer[] {2, 3, 4}); 然后我想输出: (1, 2), (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4) 注意,(3,2)不在这里,因为我已经有(2,3) 我找不到任何库甚至远程关闭的东西,我发现guava与Permutations有类似的东西,但似乎最近已经停产或其他东西。 此外,我不想将列表存储在内存中,因为它可能非常大,我只需要一次迭代一对,所以我试图找到生成它们的方法。 我正在考虑实现一个Iterable但我似乎无法编写看起来很有效的东西。 如果你知道那些已经做过这种东西的图书馆也会非常有用!

在Java 8的Spliterator中使用的奇怪循环

有人知道为什么java.util.Spliterator实现使用do-while而不是while循环,当循环体是空的时候? 例如, forEachRemaining的实现是: default void forEachRemaining(Consumer action) { do { } while (tryAdvance(action)); } 他们为什么要用 do { } while (tryAdvance(action)); 代替 while(tryAdvance(action)); ? 我不知道有什么好处吗?

窗户上的虚假唤醒。 可能吗?

我最近学会了“虚假唤醒”任何人都说这个问题只适用于某些类型的Linux PC。 我用的是windows。 我写了Spurious唤醒测试。 我得到的结果是可能的。 但我想为你展示这个测试。 也许我在某处犯了错误。 我最初的变种: import java.util.Random; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; public class TestSpuriousWakeups { static final int MAX_THREADS = 600; static final Object mutex = new Object(); static final CountDownLatch allThreadsStarted = new CountDownLatch(MAX_THREADS); static final CountDownLatch allThreadsFinished = new CountDownLatch(1); static /*final*/ volatile AtomicInteger processedThreads = new AtomicInteger(); static /*final*/ […]

使用Android将文本文件上传到Google云端硬盘

编辑:我已将文本设置为如下字符串: String text =(“Hello!”); 我想将其转换为纯文本文件,然后上传到Google云端硬盘文件夹。 我已经尝试过下面的代码,但它没有完整,所以我不能说出现了什么错误。 我正在使用谷歌硬盘“快速启动”演示,并尝试根据我的需要定制它。 链接: https : //github.com/googledrive/android-quickstart DriverClass: public class UploadDrive extends Activity implements ConnectionCallbacks,OnConnectionFailedListener { private static final String TAG = “androiddrivequickstart”; private static final int REQUEST_CODE_CAPTURE_IMAGE = 1; private static final int REQUEST_CODE_CREATOR = 2; private static final int REQUEST_CODE_RESOLUTION = 3; private GoogleApiClient mGoogleApiClient; private Bitmap mBitmapToSave; private […]

加入fetch:“查询指定的连接提取,但获取的关联的所有者在选择列表中不存在”

我有以下代码: public class ValueDAO implements BusinessObject { private Long id; private String code; private ClassDAO classDAO ; …. } public List getCodesByCodeClass(Long classId) { String select = “select distinct val.code from ValueDAO val left ” + “join fetch val.classDAO “; String where = “where val.classDAO.id = ? order by val.code”; return getHibernateTemplate().find(select + where, classId); […]

Java线程基础知识

下面两个线程调用有什么区别? 这两个电话会同样行事吗? 注意:我没有同时使用#1和#2,这是最好的选择。 private void startConnections(){ ServerThread server = new ServerThread(); server.start(); // #1 Thread serverThread = new Thread(server); serverThread.start(); //#2 } class ServerThread extends Thread{ public void run(){} }

使用maven的launch4j创建exe

我想用launch4j将我的jar包装到exe文件中。 这是我的pom.xml: 4.0.0 de.thz.cameracontrol Kamerasteuerung 0.0.3-SNAPSHOT jar name http://maven.apache.org UTF-8 1.8 2.3.2 3.3 4.3 Kamerasteuerung org.apache.maven.plugins maven-compiler-plugin ${version.maven.compiler} UTF-8 ${java.version} ${java.version} org.apache.maven.plugins maven-site-plugin ${version.maven.site} com.akathist.maven.plugins.launch4j launch4j-maven-plugin l4j-clui package launch4j console target/Kamerasteuerung-0.0.3-SNAPSHOT-jar-with-dependencies.jar target/CameraControl.exe http://java.com/download de.thz.cameracontrol.server.Server false false 1.8.0 preferJre 32 1.0.0.0 ${project.version} ${project.name} C 1.0.0.0 1.0.0.0 ${project.name} AppName CameraControl.exe org.apache.maven.plugins maven-assembly-plugin 2.4 jar-with-dependencies de.thz.cameracontrol.server.Server assembly package […]