为什么我的.values()不按预期工作

时间:2017-11-15 20:07:56

标签: java

我一直在尝试使用.values()将贷款列出到控制台,它在列出项目或借款人时使用地图,但对于我的贷款,任何人都知道为什么?

public void listLoans(){
  System.out.println("Loans:");
  for (LoanTransaction t: loans.values()) {
      System.out.println(t);
  }
  System.out.println();
}

访问者

public Map<Integer, Borrower>  getBorrowers() { return borrowers; }
public Map<Integer, Item>      getItems()     { return items; }
public List<LoanTransaction> getLoans()       { return loans; }

按预期工作的列表项的示例

public void listItems() {
    System.out.println("Items:");
    for (Item i: items.values()) {
      System.out.println(i);
    }
    System.out.println();
  }

3 个答案:

答案 0 :(得分:1)

values()没有List方法。 Maps需要将其与keySet()(以及返回键值对的entrySet()进行区分。这足以使用

for(LoanTransaction t: loans)

一般来说,任何实现Iterable的东西都可以用作for-each循环的右侧。

答案 1 :(得分:1)

values()仅在map上提供,如您所说。

如果是List,那就是它自己的价值。所以只需要不需要值

for (LoanTransaction t: loans.values())

应该是

for (LoanTransaction t: loans)

答案 2 :(得分:0)

values()仅适用于地图,因为地图是由对组成的。 loans的类型为List,要获取列表中的元素,您只需要

for (LoanTransaction t: loans) {
      System.out.println(t);
  }