Tag: java

为什么Java Map不能扩展集合?

我惊讶于Map<?,?>不是一个Collection<?> 。 如果这样宣布的话,我觉得它很有意义: public interface Map<K,V> extends Collection<Map.Entry<K,V>> 毕竟, Map<K,V>是Map.Entry<K,V>的集合,不是吗? 那么为什么没有这样实施呢? 感谢Cletus提供了一个最权威的答案,但是我仍然想知道为什么,如果你已经可以将Map<K,V>视为Set<Map.Entries<K,V>> (通过entrySet() ),相反,只是扩展这个接口。 如果一个Map是一个Collection ,那么元素是什么? 唯一合理的答案是“键值对” 确实, interface Map<K,V> extends Set<Map.Entry<K,V>>会很棒! 但是这提供了非常有限的(并且不是特别有用的) Map抽象。 但是,如果是这样的话,为什么是由接口指定的entrySet ? 这一定是有用的(我认为这个位置很容易争论)。 您不能问一个给定的键映射到什么值,也不能删除给定的键的条目,而不知道它映射到的值。 我不是说这就是Map的全部内容! 它可以而且应该保留所有其他的方法(除了entrySet ,现在是多余的)!

正则expression式在IntelliJ中的反向引用

我想使用IntelliJ的查找和replacefunction来执行以下转换: // Replace this model.put('foo', 'bar') // With this model['foo'] = bar 我已经尝试了以下内容: find的文本: model.put\((.*),(.*)\)replace为: model\[\\1\] = \\2 但是,Intellij似乎并不认可\\1和\\2作为反向引用。 我也尝试过一个斜杠,但这也不起作用。 谢谢,唐

Java:PrintStream与PrintWriter的区别

PrintStream与PrintWriter什么区别? 他们有很多共同的方法,我经常把这两个类混合起来。 而且,我认为我们可以将它们用于完全相同的事情。 但是必须有所不同,否则,只会有一个阶级。 我搜查了档案,但找不到这个问题。

JPA / Hibernate:传递给persist的分离实体

我有一个包含多对一关系的JPA持久化对象模型:一个Account拥有很多事务。 交易有一个帐户。 以下是代码片段: @Entity public class Transaction { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @ManyToOne(cascade = {CascadeType.ALL},fetch= FetchType.EAGER) private Account fromAccount; …. @Entity public class Account { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(cascade = {CascadeType.ALL},fetch= FetchType.EAGER, mappedBy = "fromAccount") private Set<Transaction> transactions; 我能够创build一个帐户对象,添加交易,并坚持正确的帐户对象。 但是,当我创build一个事务, 使用一个已经存在的已经存在的Account ,并且保存 了Transaction时 ,我得到一个exception: Caused by: org.hibernate.PersistentObjectException: detached […]

你如何得到一个string的最后一个字符?

我正在试图获得一个string的最后一个字符,但没有任何工作,除了charAt(strLength – 1) 。 我需要声明一个静态variables,并将我的数组转换为一个。 孤单的故事总之,它不适合我,出于某种原因: /** * Note that Java console applications need to be run through the java runtime * by running "java -jar JarFile.jar" in the command line. * Java console applications can not be previewed in the Compilr IDE, only applets can. */ public class isPalindrome { public static boolean status […]

在Java中将文件从一个目录复制到另一个目录

我想使用Java将文件从一个目录复制到另一个(子目录)。 我有一个目录,目录,文本文件。 我遍历了dir中的前20个文件,并且想要将它们复制到dir目录中的另一个目录,这是我在迭代之前创build的。 在代码中,我想将review (代表第i个文本文件或评论)复制到trainingDir 。 我怎样才能做到这一点? 似乎没有这样的function(或者我找不到)。 谢谢。 boolean success = false; File[] reviews = dir.listFiles(); String trainingDir = dir.getAbsolutePath() + "/trainingData"; File trDir = new File(trainingDir); success = trDir.mkdir(); for(int i = 1; i <= 20; i++) { File review = reviews[i]; }

Maven安装OSX错误不支持major.minor版本51.0

我按照以下步骤安装了maven:(一个教程) JAVA_HOME=/Library/Java/Home export M2_HOME=/Users/steven/zimmermann/maven export M2=$M2_HOME/bin export PATH=$M2:$PATH echo $JAVA_HOME echo $M2_HOME echo $M2 echo $PATH nano .bash_profile 然后我在.bash_profile这样写了echo: JAVA_HOME=/usr/libexec/java_home M2_HOME=/path/to/your/apache-maven-3.xx M2=/path/to/your/apache-maven-3.xx/bin PATH=/path/to/maven/bin:/$….bla-bla-bla… 也是我在.bashrc中写的 export M2_HOME=/Users/steven/zimmermann/maven export M2=$M2_HOME/bin export PATH=$M2:$PATH 现在当我想检查版本( mvn -v )时,我得到以下exception:我认为有一些版本是错误的,但我不知道。 Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at […]

如何匹配Java正则expression式中的“任何字符”?

以下内容应该匹配: AAA123 ABCDEFGH123 XXXX123 我可以吗: ".*123" ?

你如何比较Java中的两个版本string?

有比较版本号的标准习惯用法吗? 我不能只使用一个stringcompareTo,因为我还不知道最大的点数是多less。 我需要比较版本,并具有以下内容: 1.0 < 1.1 1.0.1 < 1.1 1.9 < 1.10

Android – 设置一个AsyncTask的超时?

我有一个AsyncTask类,我执行从网站下载一个大的数据列表。 如果最终用户在使用时有非常缓慢的数据连接,我想在一段时间后使AsyncTask超时。 我的第一个方法是这样的: MyDownloader downloader = new MyDownloader(); downloader.execute(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { if ( downloader.getStatus() == AsyncTask.Status.RUNNING ) downloader.cancel(true); } }, 30000 ); 启动AsyncTask后,启动一个新的处理程序,如果它仍在运行,将在30秒后取消AsyncTask 。 这是一个好方法吗? 还是有什么内置AsyncTask更适合这个目的?