我需要一个像STL multiset一样工作的数据结构,但Java中的TreeSet不允许重复元素.Java中是否有内置的数据结构,相当于multiset?
我试图读取大CSV和TSV(Tab sepperated)文件大约1000000行或更多.现在我试着读一下TSV含有的~2500000行opencsv,但是它却引发了我的注意java.lang.NullPointerException.它适用于TSV带有~250000线条的较小文件.所以我想知道是否有任何其他Libraries支持阅读巨大CSV和TSV文件.你有什么想法?
每个对我的代码感兴趣的人(我缩短它,所以Try-Catch显然无效):
InputStreamReader in = null;
CSVReader reader = null;
try {
in = this.replaceBackSlashes();
reader = new CSVReader(in, this.seperator, '\"', this.offset);
ret = reader.readAll();
} finally {
try {
reader.close();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是我构建的方法InputStreamReader:
private InputStreamReader replaceBackSlashes() throws Exception {
FileInputStream fis = null;
Scanner in = null;
try {
fis …Run Code Online (Sandbox Code Playgroud) 如何为非法反射访问警告抛出异常?例如,考虑以下代码:
import org.apache.commons.lang3.builder.*;
class Test {
public static void main(String[] args) {
System.out.println(ReflectionToStringBuilder.toString(Boolean.TRUE));
}
}
Run Code Online (Sandbox Code Playgroud)
此代码向 System.err 打印以下警告:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.commons.lang3.builder.ReflectionToStringBuilder (file:/Users/brianschack/eclipse-workspace/User%20Libraries/com
mons-lang3-3.7/commons-lang3-3.7.jar) to field java.lang.Boolean.value
WARNING: Please consider reporting this to the maintainers of org.apache.commons.lang3.builder.ReflectionToStringBuilder
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Run Code Online (Sandbox Code Playgroud)
Boolean.TRUE 是一个如此简单的值,我真的不需要 ReflectionToStringBuilder。但是更复杂的类型(例如 HashMap)会打印相同的警告。我选择 Boolean.TRUE 是为了简化这个例子。
当我搜索此警告消息时,我发现建议将其报告给包维护者、避免警告或完全禁用它(JDK9:发生非法反射访问操作。org.python.core.PySystemState)。 …
java reflection illegalaccessexception apache-commons-lang apache-commons-lang3
在Java类中java.util.logging.Logger,全局和根记录器之间有什么区别?它们是一样的吗?该Logger::getGlobal方法返回全局记录器.并且Logger::getParent反复调用直到结果为null将产生根记录器.当我Logger::getLogger使用空字符串调用name参数时,它是返回全局记录器还是根记录器?
http://docs.oracle.com/javase/9/docs/api/java/util/logging/Logger.html
在下面的代码中,为什么包含的两行会System.out.println(person); 产生不同的输出?第二行间接调用了Job.toString产生字符串的方法"Manager",但第一行神秘地没有产生Job@28f67ac7。在person.put("a", "b");我看来,这两者之间的界限应该没有任何区别。
代码:
import java.util.*;
import org.apache.commons.lang3.builder.*;
class Job extends HashMap<String, String> {
@Override public String toString() {
return "Manager";
}
}
class Person extends HashMap<String, String> {
Job job;
Person() {
this.job = new Job();
}
@Override public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
class Test {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person);
person.put("a", "b");
System.out.println(person);
}
}
Run Code Online (Sandbox Code Playgroud)
安慰:
Person@2b80d80f[job=Job@28f67ac7,threshold=0,loadFactor=0.75]
Person@2b80d80f[job=Manager,threshold=12,loadFactor=0.75]
Run Code Online (Sandbox Code Playgroud) java tostring apache-commons apache-commons-lang apache-commons-lang3