将两个列表合并为一个" 2维"在java中的列表

时间:2017-12-26 05:49:24

标签: java

我有两个清单:

Names= ["John","Mark","Jo","Peter"];
Values= [1.1,1.2,1.3,1.4];

我想将它们合并为:

info=[["John",1.1],["Mark",1.2],["Jo",1.3],["Peter",1.4]];

我该怎么做?请有人帮忙,请

3 个答案:

答案 0 :(得分:3)

您可以使用java.util.Map。示例代码如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group" id="viet">
  <h5>Bank Type:</h5>
  <select id="Bank_Type123" class="form-control">
           <option value="" disabled selected style="display:none;">Choose A Bank</option>
           <option name="Mizuho" value="10000">Mizuho</option>
           <option name="UFJ" value="20000" >UFJ</option>
           <option name="Yucho" value="30000" >Yucho</option>
     </select>
</div>


<div id="divCheckbox">
  <div class="input-group px-1 py-1">
    <span class="input-group-addon">Wallet</span>
    <span id="amount_of_money" class="input-group-addon unique"></span>
    <span class="input-group-addon">JPY</span>
  </div>
  <div class="input-group px-1 py-1">
    <span class="input-group-addon">Total:</span>
    <span id="amount_money_total" class="input-group-addon"></span>
    <span class="input-group-addon">JPY</span>
  </div>
</div>

答案 1 :(得分:3)

Java 8之前的方法是定义一个包装类来保存名称/值对:

public class Pair {
    private String name;
    private Double value;

    public Pair(String name, Double value) {
        this.name = name;
        this.value = value;
    }

    // getters and setters
}

然后迭代两个原始列表并填充新的结果列表:

List<String> names = new ArrayList<>();
names.add("John");
names.add("Mark");
names.add("Jo");
names.add("Peter");

List<Double> values = new ArrayList<>();
values.add(1.1d);
values.add(1.2d);
values.add(1.3d);
values.add(1.4d);

List<Pair> result = new ArrayList<>();
for (int i=0; i < names.size(); ++i) {
    result.add(new Pair(names.get(i), values.get(i));
}

答案 2 :(得分:1)

理想情况下,在这种情况下,您需要创建一个包含两个字段namevalue的类,然后使用指定的名称和值启动所需的许多对象并将其存储到list使生活变得简单,以便维护相关数据,并在以后对对象执行进一步操作。

另一个解决方案是使用另一个答案所建议的地图,但如果不存在重复的名称则只使用

尽管如此,如果您不想继续使用建议的方法,您可以将这两个列表合并在一起:

从Java-8开始:

List<List<Object>> merged = 
      IntStream.range(0, Names.size())
               .mapToObj(i -> Arrays.asList((Object) Names.get(i), Values.get(i)))
               .collect(Collectors.toList());

或强制性方法:

List<List<Object>> merged = new ArrayList<>();    
for (int i = 0; i < Names.size(); i++) {
      List<Object> temp = new ArrayList<>();
      temp.add(Names.get(i));
      temp.add(Values.get(i));
      merged.add(temp);
}

请注意,使用命令式方法,您可以在合并后修改嵌套列表,而第一种情况则无法修改嵌套列表。在决定哪种情况最适合您的情况时,我会留给您。

顺便说一下,你应该用小写字母开始变量,即names而不是Namesvalues而不是Values等。