相关疑难解决方法(0)

如何最优雅地迭代并行集合?

假设我有2个并行集合,例如:a中的人名List<String>列表以及a List<Int>中相同顺序的年龄列表(以便每个集合中的任何给定索引指向同一个人).

我想同时遍历这两个集合,并获取每个人的姓名和年龄,并用它做一些事情.使用数组,这很容易完成:

for (int i = 0; i < names.length; i++) {
   do something with names[i] ....
   do something with ages[i].....
}
Run Code Online (Sandbox Code Playgroud)

使用集合执行此操作的最优雅方式(在可读性和速度方面)是什么?

java collections

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

什么是zip(函数式编程?)

我最近看到了一些Clojure或Scala(对不起,我不熟悉它们),他们确实在列表或类似的东西上拉链.什么是拉链,它来自哪里?

zip functional-programming clojure

44
推荐指数
5
解决办法
2万
查看次数

使用foreach在Java中迭代并行数组的漂亮方法

我继承了一大堆代码,它们广泛使用并行数组来存储键/值对.实际上这样做是有意义的,但是编写循环遍历这些值有点尴尬.我真的很喜欢新的Java foreach构造,但似乎没有办法使用它来迭代并行列表.

通过正常for循环,我可以轻松完成:

for (int i = 0; i < list1.length; ++i) {
    doStuff(list1[i]);
    doStuff(list2[i]);
}
Run Code Online (Sandbox Code Playgroud)

但在我看来,这不是语义上的纯粹,因为我们没有检查list2迭代期间的界限.是否有一些类似于for-each的聪明语法可用于并行列表?

java iteration foreach

32
推荐指数
4
解决办法
3万
查看次数

构造函数中的异常

在C++中,对象的生命周期在构造函数成功完成时开始.在构造函数内部,该对象尚不存在.

问:从构造函数中发出异常是什么意思?

答:这意味着建筑已经失败,对象从未存在过,它的生命从未开始.[ 来源 ]

我的问题是:Java也是如此吗?例如,如果我this交给另一个对象,然后我的构造函数失败了会发生什么?

Foo()
{
    Bar.remember(this);
    throw new IllegalStateException();
}
Run Code Online (Sandbox Code Playgroud)

这个定义明确吗?请问Bar现在有一个非对象的引用?

java constructor exception

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

Java:迭代2个列表的最佳/优雅方式

假设我有一个List<SomeObject> a.
现在还假设我有另一个List<SomeProcessor> b.
每一个SomeProcessor使用a它的处理.

除了:

int idx = 0;   
for(SomeProcessor o:b){  
    o2 = a.get(idx);  
    o.doSomething(o2);  
    idx++;   
}
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式来处理这个问题吗?

java iteration list arraylist

6
推荐指数
1
解决办法
6506
查看次数

在java中的同一循环中迭代两个hashmap的最佳方法是什么?

迭代下面两张地图的最佳方法是什么?我想比较两个作为字符串的地图值,并且必须获取键和值.

HashMap<String, String> map1;
HashMap<String, String> map2;
Run Code Online (Sandbox Code Playgroud)

java collections data-structures

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