> ## Documentation Index
> Fetch the complete documentation index at: https://cdktn.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Java: ListTerraformIterator

> CDKTN Core API Reference for ListTerraformIterator in Java.

## Initializers <a name="Initializers" id="cdktn.ListTerraformIterator.Initializer" />

```java theme={null}
import io.cdktn.cdktn.ListTerraformIterator;

new ListTerraformIterator(java.util.List<java.lang.String>|IResolvable|java.util.List<java.lang.Number>|java.util.List<java.lang.Boolean|IResolvable> list);
```

| **Name**                                                                                | **Type**                                                                                                                                                                                                              | **Description**   |
| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| <code><a href="#cdktn.ListTerraformIterator.Initializer.parameter.list">list</a></code> | <code>java.util.List\< java.lang.String >\|<a href="#cdktn.IResolvable">IResolvable</a>\|java.util.List\< java.lang.Number >\|java.util.List\<java.lang.Boolean\|<a href="#cdktn.IResolvable">IResolvable</a>></code> | *No description.* |

***

### `list`<sup>Required</sup> <a name="list" id="cdktn.ListTerraformIterator.Initializer.parameter.list" />

* *Type:* java.util.List\< java.lang.String >|<a href="#cdktn.IResolvable">IResolvable</a>|java.util.List\< java.lang.Number >|java.util.List\<java.lang.Boolean|<a href="#cdktn.IResolvable">IResolvable</a>>

***

## Methods <a name="Methods" id="Methods" />

| **Name**                                                                                          | **Description**                                                                              |
| ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| <code><a href="#cdktn.ListTerraformIterator.dynamic">dynamic</a></code>                           | Creates a dynamic expression that can be used to loop over this iterator in a dynamic block. |
| <code><a href="#cdktn.ListTerraformIterator.forExpressionForList">forExpressionForList</a></code> | Creates a for expression that results in a list.                                             |
| <code><a href="#cdktn.ListTerraformIterator.forExpressionForMap">forExpressionForMap</a></code>   | Creates a for expression that results in a map.                                              |
| <code><a href="#cdktn.ListTerraformIterator.getAny">getAny</a></code>                             | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getAnyMap">getAnyMap</a></code>                       | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getBoolean">getBoolean</a></code>                     | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getBooleanMap">getBooleanMap</a></code>               | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getList">getList</a></code>                           | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getMap">getMap</a></code>                             | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getNumber">getNumber</a></code>                       | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getNumberList">getNumberList</a></code>               | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getNumberMap">getNumberMap</a></code>                 | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getString">getString</a></code>                       | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.getStringMap">getStringMap</a></code>                 | *No description.*                                                                            |
| <code><a href="#cdktn.ListTerraformIterator.keys">keys</a></code>                                 | Creates a for expression that maps the iterators to its keys.                                |
| <code><a href="#cdktn.ListTerraformIterator.pluckProperty">pluckProperty</a></code>               | Creates a for expression that accesses the key on each element of the iterator.              |
| <code><a href="#cdktn.ListTerraformIterator.values">values</a></code>                             | Creates a for expression that maps the iterators to its value in case it is a map.           |

***

### `dynamic` <a name="dynamic" id="cdktn.ListTerraformIterator.dynamic" />

```java theme={null}
public IResolvable dynamic(java.util.Map<java.lang.String, java.lang.Object> attributes)
```

Creates a dynamic expression that can be used to loop over this iterator in a dynamic block.

As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.
See [https://cdktn.io/docs/concepts/iterators#using-iterators-for-list-attributes](https://cdktn.io/docs/concepts/iterators#using-iterators-for-list-attributes)

#### `attributes`<sup>Required</sup> <a name="attributes" id="cdktn.ListTerraformIterator.dynamic.parameter.attributes" />

* *Type:* java.util.Map\< java.lang.String, java.lang.Object >

***

### `forExpressionForList` <a name="forExpressionForList" id="cdktn.ListTerraformIterator.forExpressionForList" />

```java theme={null}
public IResolvable forExpressionForList(java.lang.String|IResolvable expression)
```

Creates a for expression that results in a list.

This method allows you to create every possible for expression, but requires more knowledge about
Terraform's for expression syntax.
For the most common use cases you can use keys(), values(), and pluckProperty() instead.

You may write any valid Terraform for each expression, e.g.
`TerraformIterator.fromList(myIteratorSourceVar).forExpressionForList("val.foo if val.bar == true")`
will result in `[ for key, val in var.myIteratorSource: val.foo if val.bar == true ]`.

As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

#### `expression`<sup>Required</sup> <a name="expression" id="cdktn.ListTerraformIterator.forExpressionForList.parameter.expression" />

* *Type:* java.lang.String|<a href="#cdktn.IResolvable">IResolvable</a>

The expression to use in the for mapping.

***

### `forExpressionForMap` <a name="forExpressionForMap" id="cdktn.ListTerraformIterator.forExpressionForMap" />

```java theme={null}
public IResolvable forExpressionForMap(java.lang.String|IResolvable keyExpression, java.lang.String|IResolvable valueExpression)
```

Creates a for expression that results in a map.

This method allows you to create every possible for expression, but requires more knowledge about
Terraforms for expression syntax.
For the most common use cases you can use keys(), values(), and pluckProperty instead.

You may write any valid Terraform for each expression, e.g.
`TerraformIterator.fromMap(myIteratorSourceVar).forExpressionForMap("key", "val.foo if val.bar == true")`
will result in `\{ for key, val in var.myIteratorSource: key => val.foo if val.bar == true }`.

As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

#### `keyExpression`<sup>Required</sup> <a name="keyExpression" id="cdktn.ListTerraformIterator.forExpressionForMap.parameter.keyExpression" />

* *Type:* java.lang.String|<a href="#cdktn.IResolvable">IResolvable</a>

The expression to use as key in the for mapping.

***

#### `valueExpression`<sup>Required</sup> <a name="valueExpression" id="cdktn.ListTerraformIterator.forExpressionForMap.parameter.valueExpression" />

* *Type:* java.lang.String|<a href="#cdktn.IResolvable">IResolvable</a>

The expression to use as value in the for mapping.

***

### `getAny` <a name="getAny" id="cdktn.ListTerraformIterator.getAny" />

```java theme={null}
public IResolvable getAny(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getAny.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getAnyMap` <a name="getAnyMap" id="cdktn.ListTerraformIterator.getAnyMap" />

```java theme={null}
public java.util.Map<java.lang.String, java.lang.Object> getAnyMap(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getAnyMap.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getBoolean` <a name="getBoolean" id="cdktn.ListTerraformIterator.getBoolean" />

```java theme={null}
public IResolvable getBoolean(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getBoolean.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getBooleanMap` <a name="getBooleanMap" id="cdktn.ListTerraformIterator.getBooleanMap" />

```java theme={null}
public java.util.Map<java.lang.String, java.lang.Boolean> getBooleanMap(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getBooleanMap.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getList` <a name="getList" id="cdktn.ListTerraformIterator.getList" />

```java theme={null}
public java.util.List<java.lang.String> getList(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getList.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getMap` <a name="getMap" id="cdktn.ListTerraformIterator.getMap" />

```java theme={null}
public java.util.Map<java.lang.String, java.lang.Object> getMap(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getMap.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getNumber` <a name="getNumber" id="cdktn.ListTerraformIterator.getNumber" />

```java theme={null}
public java.lang.Number getNumber(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getNumber.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getNumberList` <a name="getNumberList" id="cdktn.ListTerraformIterator.getNumberList" />

```java theme={null}
public java.util.List<java.lang.Number> getNumberList(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getNumberList.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getNumberMap` <a name="getNumberMap" id="cdktn.ListTerraformIterator.getNumberMap" />

```java theme={null}
public java.util.Map<java.lang.String, java.lang.Number> getNumberMap(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getNumberMap.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getString` <a name="getString" id="cdktn.ListTerraformIterator.getString" />

```java theme={null}
public java.lang.String getString(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getString.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `getStringMap` <a name="getStringMap" id="cdktn.ListTerraformIterator.getStringMap" />

```java theme={null}
public java.util.Map<java.lang.String, java.lang.String> getStringMap(java.lang.String attribute)
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ListTerraformIterator.getStringMap.parameter.attribute" />

* *Type:* java.lang.String

name of the property to retrieve.

***

### `keys` <a name="keys" id="cdktn.ListTerraformIterator.keys" />

```java theme={null}
public IResolvable keys()
```

Creates a for expression that maps the iterators to its keys.

For lists these would be the indices, for maps the keys.
As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

### `pluckProperty` <a name="pluckProperty" id="cdktn.ListTerraformIterator.pluckProperty" />

```java theme={null}
public IResolvable pluckProperty(java.lang.String property)
```

Creates a for expression that accesses the key on each element of the iterator.

As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

#### `property`<sup>Required</sup> <a name="property" id="cdktn.ListTerraformIterator.pluckProperty.parameter.property" />

* *Type:* java.lang.String

The property of the iterators values to map to.

***

### `values` <a name="values" id="cdktn.ListTerraformIterator.values" />

```java theme={null}
public IResolvable values()
```

Creates a for expression that maps the iterators to its value in case it is a map.

For lists these would stay the same.
As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

## Static Functions <a name="Static Functions" id="Static Functions" />

| **Name**                                                                                | **Description**                                                                               |
| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| <code><a href="#cdktn.ListTerraformIterator.fromComplexList">fromComplexList</a></code> | Creates a new iterator from a complex list.                                                   |
| <code><a href="#cdktn.ListTerraformIterator.fromDataSources">fromDataSources</a></code> | Creates a new iterator from a data source that has been created with the `for_each` argument. |
| <code><a href="#cdktn.ListTerraformIterator.fromList">fromList</a></code>               | Creates a new iterator from a list.                                                           |
| <code><a href="#cdktn.ListTerraformIterator.fromMap">fromMap</a></code>                 | Creates a new iterator from a map.                                                            |
| <code><a href="#cdktn.ListTerraformIterator.fromResources">fromResources</a></code>     | Creates a new iterator from a resource that has been created with the `for_each` argument.    |

***

### `fromComplexList` <a name="fromComplexList" id="cdktn.ListTerraformIterator.fromComplexList" />

```java theme={null}
import io.cdktn.cdktn.ListTerraformIterator;

ListTerraformIterator.fromComplexList(IResolvable|ComplexList|StringMapList|NumberMapList|BooleanMapList|AnyMapList list, java.lang.String mapKeyAttributeName)
```

Creates a new iterator from a complex list.

One example for this would be a list of maps.
The list will be converted into a map with the mapKeyAttributeName as the key.

*Example*

```java theme={null}
// Example automatically generated from non-compiling source. May contain errors.
Object cert = AcmCertificate.Builder.create(this, "cert")
        .domainName("example.com")
        .validationMethod("DNS")
        .build();

Object dvoIterator = TerraformIterator.fromComplexList(cert.getDomainValidationOptions(), "domain_name");

Route53Record.Builder.create(this, "record")
        .allowOverwrite(true)
        .name(dvoIterator.getString("name"))
        .records(List.of(dvoIterator.getString("record")))
        .ttl(60)
        .type(dvoIterator.getString("type"))
        .zoneId(Token.asString(dataAwsRoute53ZoneExample.getZoneId()))
        .forEach(dvoIterator)
        .build();
```

#### `list`<sup>Required</sup> <a name="list" id="cdktn.ListTerraformIterator.fromComplexList.parameter.list" />

* *Type:* <a href="#cdktn.IResolvable">IResolvable</a>|<a href="#cdktn.ComplexList">ComplexList</a>|<a href="#cdktn.StringMapList">StringMapList</a>|<a href="#cdktn.NumberMapList">NumberMapList</a>|<a href="#cdktn.BooleanMapList">BooleanMapList</a>|<a href="#cdktn.AnyMapList">AnyMapList</a>

the list to iterate over.

***

#### `mapKeyAttributeName`<sup>Required</sup> <a name="mapKeyAttributeName" id="cdktn.ListTerraformIterator.fromComplexList.parameter.mapKeyAttributeName" />

* *Type:* java.lang.String

the name of the attribute that should be used as the key in the map.

Visit [https://cdktn.io/docs/concepts/iterators#using-iterators-on-complex-lists](https://cdktn.io/docs/concepts/iterators#using-iterators-on-complex-lists) for more information.

***

### `fromDataSources` <a name="fromDataSources" id="cdktn.ListTerraformIterator.fromDataSources" />

```java theme={null}
import io.cdktn.cdktn.ListTerraformIterator;

ListTerraformIterator.fromDataSources(ITerraformResource resource)
```

Creates a new iterator from a data source that has been created with the `for_each` argument.

#### `resource`<sup>Required</sup> <a name="resource" id="cdktn.ListTerraformIterator.fromDataSources.parameter.resource" />

* *Type:* <a href="#cdktn.ITerraformResource">ITerraformResource</a>

***

### `fromList` <a name="fromList" id="cdktn.ListTerraformIterator.fromList" />

```java theme={null}
import io.cdktn.cdktn.ListTerraformIterator;

ListTerraformIterator.fromList(java.util.List<java.lang.String>|IResolvable|java.util.List<java.lang.Number>|java.util.List<java.lang.Boolean|IResolvable> list)
```

Creates a new iterator from a list.

#### `list`<sup>Required</sup> <a name="list" id="cdktn.ListTerraformIterator.fromList.parameter.list" />

* *Type:* java.util.List\< java.lang.String >|<a href="#cdktn.IResolvable">IResolvable</a>|java.util.List\< java.lang.Number >|java.util.List\<java.lang.Boolean|<a href="#cdktn.IResolvable">IResolvable</a>>

***

### `fromMap` <a name="fromMap" id="cdktn.ListTerraformIterator.fromMap" />

```java theme={null}
import io.cdktn.cdktn.ListTerraformIterator;

ListTerraformIterator.fromMap(ComplexMap|java.util.Map<java.lang.String, java.lang.Object>|java.util.Map<java.lang.String, java.lang.String>|java.util.Map<java.lang.String, java.lang.Number>|java.util.Map<java.lang.String, java.lang.Boolean> map)
```

Creates a new iterator from a map.

#### `map`<sup>Required</sup> <a name="map" id="cdktn.ListTerraformIterator.fromMap.parameter.map" />

* *Type:* <a href="#cdktn.ComplexMap">ComplexMap</a>|java.util.Map\< java.lang.String, java.lang.Object >|java.util.Map\< java.lang.String, java.lang.String >|java.util.Map\< java.lang.String, java.lang.Number >|java.util.Map\< java.lang.String, java.lang.Boolean >

***

### `fromResources` <a name="fromResources" id="cdktn.ListTerraformIterator.fromResources" />

```java theme={null}
import io.cdktn.cdktn.ListTerraformIterator;

ListTerraformIterator.fromResources(ITerraformResource resource)
```

Creates a new iterator from a resource that has been created with the `for_each` argument.

#### `resource`<sup>Required</sup> <a name="resource" id="cdktn.ListTerraformIterator.fromResources.parameter.resource" />

* *Type:* <a href="#cdktn.ITerraformResource">ITerraformResource</a>

***

## Properties <a name="Properties" id="Properties" />

| **Name**                                                                     | **Type**                      | **Description**                                                             |
| ---------------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------- |
| <code><a href="#cdktn.ListTerraformIterator.property.key">key</a></code>     | <code>java.lang.Object</code> | Returns the currently entry in the list or set that is being iterated over. |
| <code><a href="#cdktn.ListTerraformIterator.property.value">value</a></code> | <code>java.lang.Object</code> | Returns the value of the current item iterated over.                        |

***

### `key`<sup>Required</sup> <a name="key" id="cdktn.ListTerraformIterator.property.key" />

```java theme={null}
public java.lang.Object getKey();
```

* *Type:* java.lang.Object

Returns the currently entry in the list or set that is being iterated over.

For lists this is the same as `iterator.value`. If you need the index,
use count via `TerraformCount`:
[https://cdktn.io/docs/concepts/iterators#using-count](https://cdktn.io/docs/concepts/iterators#using-count)

***

### `value`<sup>Required</sup> <a name="value" id="cdktn.ListTerraformIterator.property.value" />

```java theme={null}
public java.lang.Object getValue();
```

* *Type:* java.lang.Object

Returns the value of the current item iterated over.

***
