相关疑难解决方法(0)

如何在java中将字符串数组拆分为小块数组?

以下是需要帮助的代码段示例

例:

[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
  • 如果块大小是1,[1,2,3,4,5]
  • 如果块大小是2,[1,2][3,4][5]
  • 如果块大小是3,[1,2,3][4,5]
  • 如果块大小是4,[1,2,3,4][5]

Java(来自评论):

int counter = 0;
for (int i=0; i<array.length; i++) {
  if (count == chunksize) {
    //do something and initialize
    counter = 0;
  }
  counter++; 
}
Run Code Online (Sandbox Code Playgroud)

java

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

什么是导致堆污染的Java代码的一个明显正确的例子?

我正在尝试决定在每次使用参数化的varargs(例如in)时遇到Java堆污染警告时该怎么做

public static <T> LinkedList<T> list(T... elements) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在我看来,如果我有信心不在我的方法中使用一些奇怪的演员,我应该@SafeVarargs继续使用并继续前进.但这是正确的,还是我需要更加小心?使用参数化varargs时,是否有明显正确的代码实际上不安全?

阅读有关该主题的内容,我注意到提供的示例非常人为.例如,Java文档显示以下错误方法:

public static void faultyMethod(List<String>... l) {
    Object[] objectArray = l;     // Valid
    objectArray[0] = Arrays.asList(42);
    String s = l[0].get(0);       // ClassCastException thrown here
}
Run Code Online (Sandbox Code Playgroud)

这是教诲但非常不现实; 有经验的程序员不太可能编写代码来做这样的事情.另一个例子

Pair<String, String>[] method(Pair<String, String>... lists) { 
   Object[] objs = lists; 
   objs[0] = new Pair<String, String>("x", "y");  
   objs[1] = new Pair<Long, Long>(0L, 0L);  // corruption !!! 
   return lists; 
} 
Run Code Online (Sandbox Code Playgroud)

这显然是以一种不切实际的方式混合类型.

那么,在参数化的变量下,堆污染会发生更微妙的情况吗?@SafeVarargs如果我没有以丢失输入信息的方式转换变量,或者错误地混合类型,我是否有理由使用?换句话说,我是否有理由将这一警告视为一种不太重要的形式?

java variadic-functions heap-pollution

13
推荐指数
2
解决办法
382
查看次数

标签 统计

java ×2

heap-pollution ×1

variadic-functions ×1