小编Joe*_*oel的帖子

将List的前n个元素放入数组的最快方法

获取存储在数组中的列表的前n个元素的最快方法是什么?

将此视为场景:

int n = 10;
ArrayList<String> in = new ArrayList<>();
for(int i = 0; i < (n+10); i++)
  in.add("foobar");
Run Code Online (Sandbox Code Playgroud)

选项1:

String[] out = new String[n];
for(int i = 0; i< n; i++)
    out[i]=in.get(i);
Run Code Online (Sandbox Code Playgroud)

选项2:

String[] out = (String[]) (in.subList(0, n)).toArray();
Run Code Online (Sandbox Code Playgroud)

选项3: 有更快的方法吗?也许使用Java8-streams?

java arrays performance

32
推荐指数
2
解决办法
7万
查看次数

通过Java Stream汇总ArrayList <Double>

我试图弄清楚如何总结'ArrayList'的所有元素.

我已经尝试过了:

 double totalevent = myList.stream().mapToDouble(f -> f).sum();
Run Code Online (Sandbox Code Playgroud)

虽然myList是一个ArrayList<Double>.

没有无用的mapToDouble功能有没有办法做到这一点?

double java-8 java-stream

18
推荐指数
1
解决办法
2万
查看次数

如何使用Streams将HashMap转换为Java 8中的K/V-String

我想尽快创建一个我的键值对的字符串HashMap<String, String> m.

我试过了:

StringBuffer buf = new StringBuffer();
buf.append("[");
for (String key : m.keySet()) {
   buf.append(key);
   buf.append("=");
   buf.append(m.get(key));
   buf.append(";");
}
buf.append("]");
Run Code Online (Sandbox Code Playgroud)

用Java8我试过:

m.entrySet().stream()
            .map(entry -> entry.getKey() + " = " + entry.getValue())
            .collect(Collectors.joining("; " , "[" , "]"));
Run Code Online (Sandbox Code Playgroud)

有更快,更好的代码吗?在地图函数中附加键和值似乎代价很高,不是吗?

java hashmap java-8 java-stream

7
推荐指数
1
解决办法
4293
查看次数

List.sublist(n,m) 的观点是什么?

我正在尝试将其切ArrayList<String>成两半。

ArrayList<String> in = new ArrayList<>(), out1, out2;
out1 = (ArrayList<String>) in.subList(0,2); //will cause an ClassCastException: List cannot be casted to ArrayList
out2 = (ArrayList<String>) in.subList(2,5); // either here
Run Code Online (Sandbox Code Playgroud)

为什么?视图代表什么,哪个 subList 返回?

java arraylist classcastexception java-8

5
推荐指数
1
解决办法
844
查看次数

从集合集中添加所有项目的最佳方法

实现以下目标的最佳,最便宜,最佳性能的方法是什么:

我有一个CollectionObjects myObject,它提供了一个返回一组整数的方法.我想将集合中的所有项目添加到新集合中.

LinkedList<myObject>  ll = new LinkedList<>();

    //fill the list bla bla

Set<Integer> result = ll.stream()
    .map(f -> f.getTheSet())
    .flatMap(Set::stream)
    .collect(Collectors.toCollection(TreeSet::new));

System.out.println(result.toString());
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来获得包含所有对象的所有整数的结果集?我想避免使用flatMap命令"解压缩集合" .相反,我想到的事情.addAll或者最终无关紧要,因为.addAll无论如何解开?

java collections java-8 java-stream collectors

3
推荐指数
1
解决办法
2206
查看次数