我正在尝试将文件中的数据加载到JTable中。 因此,使用Java 8流可以很容易地将文件加载到字符串数组中: BufferedReader br = new BufferedReader(new FileReader(f)); Object[] data = br.lines().map((s)->{ String[] res = {s,”1″}; // Here’s some conversion of line into String[] – elements of one row return res; }).toArray(); TableModel m = new DefaultTableModel( (String[][])data, cols); 但最后一行导致错误:线程“AWT-EventQueue-0”中的exceptionjava.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[[Ljava.lang.Object。 如何将数据转换为String [] []?
我正在实现使用合并function的自己的收集器。 不幸的是,对于我的一些情况,我不能重用抛出IllegalStateException的以下JDK合并函数。 java.util.stream.Collectors#throwingMerger 它发生的原因是它具有私有访问修饰符,并且来自其他(非内部)类的访问受到限制。 但是,javadoc说: 这可用于强制假设所收集的元素是不同的 但是,正如我所见,java doc已经过时了。 它不能使用。 问题是JDK是否为java开发人员提供了类似function的访问权限(类似方法,常量等),还是应该自己编写?
以下代码: public class Test { public static void main(String[] args) { Stream.of(1,2,3).map(String::valueOf).collect(Collectors::toList) } } intellij告诉我: Collector不是function接口 但是当我修改代码如下,一切都很好,我不知道为什么? public class Test { public static void main(String[] args) { Stream.of(1,2,3).map(String::valueOf).collect(Collectors.toList) } }
我在一段时间后问了一个关于解析单个匹配行的CSV文件的问题 。 在下面显示的示例中,我使用bufferedreader来读取标题行作为第一步。 使用此行,我解析列名称,然后继续搜索匹配的行。 我需要搜索匹配行的过滤条件应该基于2列值,而下面显示的代码只返回1行 – 可能是因为我使用 .findFirst().get(); 相反,我需要以下几行(但此代码无效) List rowCols = reader.lines() //.skip(1) .map((line) -> Arrays.asList(line.split(“,”))) .filter(list -> !list.get(col1Index).equalsIgnoreCase(“0:00”) && !list.get(col2Index).equalsIgnoreCase(“0:00”)) .findFirst().get(); 因为这也只返回1行 – 但filter匹配多行。 我现在需要返回多个匹配的行,但我无法弄清楚正确的语法。 String fileName = … try (BufferedReader reader = new BufferedReader( new InputStreamReader(ftpClient. retrieveFileStream(fileName)))){ List columns = reader.lines() .findFirst() .map(line -> Arrays.asList(line.split(“,”))) .get(); // find the relevant sections from […]
问题 我编写了一个程序来查找给定字符串的字符的大写和小写的所有可能性。 一个例子是,输入 – “ab”/“Ab”等 – 任何一个输出 – [“ab”,“Ab”,“aB”,“AB”] 码 算法不正确 – 请在下方查看。 public static ArrayList permuteUCLC(String a) { String s=new String(a.toLowerCase()); ArrayList arr = new ArrayList(); arr.add(a); int l = a.length(); for(int i=0;i<=l;i++) { for(int j=i+1;j<=l;j++) { arr.add(s.substring(0,i)+s.substring(i,j).toUpperCase()+s.substring(j,l)); } } Collections.sort(arr); Collections.reverse(arr); return arr; } 警告 在提出问题后我意识到我的算法是错误的。 我会在适当的时候尝试上传正确的算法。 子序列代码(正确代码)这是用于查找所有子序列并对其进行上限的代码。 假设所有字符都是唯一的。 如何查找索引并以function方式实现? public static void […]
当我尝试编译以下代码时 public interface SomeInterface{ private static Logger logger = Logger.getLogger(); public default void someMethod(){ logger.info(“someMethod: default implementation”); } } 我收到一个错误 Illegal modifier for the interface field SomeInterface.logger; only public, static & final are permitted 当我删除private修饰符时,代码编译,但我不希望包中的其他类看到此字段。 为什么Java在实际上有意义的时候不允许我做这样的事情?
我有以下代码: class inner { Integer i; public Integer getValue() { return i; } public void setValue(Integer i) { this.i = i; } } class outer { public static inner i1; outer(Integer i) { i1.setValue(i); } } public class MyClass{ public void main() { List ll = Arrays.asList(new outer(2)).stream().map(outer.i1::getValue).collect(Collectors.toList()); } 我收到以下错误: required: Function found: outer.i1::getValue reason: […]
我使用java / jetty自托管服务器和jersey-2 for java RESTful api。 Application具有带有属性的application.properties文件。 ConfigurationProperties类读取属性文件并将其加载到java.util.Properties类中。 Jetty服务器实例化以下列方式完成。 // Create and register resources final ResourceConfig resourceConfig = new ApiServiceConfig() .register(new DependencyInjectionBinder()); ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); contextHandler.setContextPath(“/mydomain/api”); Server jettyServer = new Server(8585); jettyServer.setHandler(contextHandler); ServletHolder jerseyServlet = new ServletHolder(new ServletContainer(resourceConfig)); contextHandler.addServlet(jerseyServlet, “/*”); // Create web context. Can’t use. //WebApplicationContext webContext = getWebApplicationContext(); // Add […]
我以前有一个可调用的类 class SampleTask implements Callable { @Override public Double call() throws Exception { return 0d; } } 我曾经使用ExecutorService来提交Callable 。 如何更改为使用CompletableFuture.supplyAsync ? 以下代码无法编译 SampleTask task = new SampleTask(); CompletableFuture.supplyAsync(task); 不存在变量类型U的实例,以便SampleTask符合供应商
我想检查目标时间是否在两个给定时间之间,而不考虑使用Java8时间的日期。 假设开始时间是“21:30” ,结束时间是“06:30” ,目标时间是“03:00” ,所以程序应该返回true。 @Test public void posteNuit() { DateTimeFormatter format = DateTimeFormatter.ofPattern(“HH:mm”); String s = “21:30”; String e = “06:30”; String t = “03:00”; LocalTime startTime = LocalTime.parse(s, format); LocalTime endTime = LocalTime.parse(e, format); LocalTime targetTime = LocalTime.parse(t, format); if ( targetTime.isBefore(endTime) && targetTime.isAfter(startTime) ) { System.out.println(“Yes! night shift.”); } else { System.out.println(“Not! […]