# Mastering CodingBat (Java), Vol. 2: Intermediate A in paperback now available for pre-order

The paperback edition of Mastering CodingBat (Java), Vol. 2: Intermediate A is now available for pre-order. It will be released on 29 April. A Kindle ebook will be released soon after that date. Check out the product page of this book for further information, including a sample PDF.

# Mastering CodingBat (Java), Vol. 1: Basics now available as ebook

Mastering CodingBat (Java), Vol. 1: Basics is now also available as an ebook for Amazon Kindle. Amazon also offers a free reader app for computers and mobile phones. Check out the product page of this book for further information, including a sample PDF.

# CodingBat: Java. Map-2

For further help with Coding Bat (Java), please check out my books. I am also available for tutoring.

Here are my solutions to the Map-2 section on CodingBat.

word0:

```public Map<String, Integer> word0(String[] strings) {

Map<String, Integer> map = new HashMap<String, Integer>();

for (int i = 0; i < strings.length; i++) {
map.put(strings[i], 0);
}

return map;
}
```

wordLen:

```public Map<String, Integer> wordLen(String[] strings) {

Map<String, Integer> map = new HashMap<String, Integer>();

for (int i = 0; i < strings.length; i++) {
String tmp = strings[i];
map.put(tmp, tmp.length());
}

return map;
}
```

pairs:

```public Map<String, String> pairs(String[] strings) {

Map<String, String> map = new HashMap<String, String>();

for (int i = 0; i < strings.length; i++) {
String tmp   = strings[i];
String first = String.valueOf(tmp.charAt(0));
String last  = String.valueOf(tmp.charAt(tmp.length() - 1));
map.put(first, last);
}

return map;
}
```

wordCount:

```public Map<String, Integer> wordCount(String[] strings) {

Map<String, Integer> map = new HashMap<String, Integer>();

for (int i = 0; i < strings.length; i++) {

String tmp = strings[i];

if (map.containsKey(tmp)) {
int count = map.get(tmp);
map.put(tmp, count + 1);
} else {
map.put(tmp, 1);
}

}
return map;
}
```

firstChar:

```public Map<String, String> firstChar(String[] strings) {

Map<String, String> map = new HashMap<String, String>();

for (int i = 0; i < strings.length; i++) {

String key = String.valueOf(strings[i].charAt(0));

if (map.containsKey(key)) {
String val = map.get(key) + strings[i];
map.put(key, val);
} else {
map.put(key, strings[i]);
}

}
return map;
}
```

wordAppend:

```public String wordAppend(String[] strings) {

Map<String, Integer> map    = new HashMap<String, Integer>();
String               result = "";

for (int i = 0; i < strings.length; i++) {

String key = strings[i];

if (map.containsKey(key)) {
int val = map.get(key);
val++;
if (val % 2 == 0) {
result += key;
}
map.put(key, val);
} else {
map.put(key, 1);
}

}

return result;
}
```

wordMultiple:

```public Map<String, Boolean> wordMultiple(String[] strings) {

Map<String, Integer> counts = new HashMap<String, Integer>();
Map<String, Boolean> result = new HashMap<String, Boolean>();

for (int i = 0; i < strings.length; i++) {
String key = strings[i];

if (counts.containsKey(key)) {
int val = counts.get(key);
val++;
counts.put(key, val);
} else {
counts.put(key, 1);
}

result.put(key, counts.get(key) >= 2);
}

return result;
}
```

allSwap:

```public String[] allSwap(String[] strings) {

Map<String, Integer> map = new HashMap<String, Integer>();

for (int i = 0; i < strings.length; i++) {

String key = String.valueOf(strings[i].charAt(0));

if (map.containsKey(key)) {

// swap
int    pos   = map.get(key);
String tmp   = strings[pos];
strings[pos] = strings[i];
strings[i]   = tmp ;

// delete
map.remove(key);

} else {
map.put(key, i);
}

}

return strings;
}
```

firstSwap:

```public String[] firstSwap(String[] strings) {

Map<String, Integer> map = new HashMap<String, Integer>();

for (int i = 0; i < strings.length; i++) {

String key = String.valueOf(strings[i].charAt(0));

if (map.containsKey(key)) {

int val = map.get(key);
if (val == -1) {
continue;
}

// swap
int    pos   = map.get(key);
String tmp   = strings[pos];
strings[pos] = strings[i];
strings[i]   = tmp ;

// set a flag
map.put(key, -1);

} else {
map.put(key, i);
}

}

return strings;
}
```

For further help with Coding Bat (Java), please check out my books. I am also available for tutoring.

# CodingBat: Java. Map-1

For further help with Coding Bat (Java), please check out my books. I am also available for tutoring.

Nick Parlante updated CodingBat with two new sets of Java exercises, which both focus on maps. My solutions for Map-1 are below.

mapBully:

```public Map<String, String> mapBully(Map<String, String> map) {
if (map.containsKey("a")) {
String tmp = map.get("a");
map.put("a", "");
map.put("b", tmp);
}
return map;
}
```

mapShare:

```public Map<String, String> mapShare(Map<String, String> map) {
if (map.containsKey("a")) {
String tmp = map.get("a");
map.put("b", tmp);
}
map.remove("c");
return map;
}
```

mapAB:

```public Map<String, String> mapAB(Map<String, String> map) {
if (map.containsKey("a") && map.containsKey("b")) {
String tmp = map.get("a") + map.get("b");
map.put("ab", tmp);
}
return map;
}

```

topping1:

```public Map<String, String> topping1(Map<String, String> map) {
if (map.containsKey("ice cream")) {
map.put("ice cream", "cherry");
}
return map;
}
```

topping2:

```public Map<String, String> topping2(Map<String, String> map) {
if (map.containsKey("ice cream")) {
map.put("yogurt", map.get("ice cream"));
}
if (map.containsKey("spinach")) {
map.put("spinach", "nuts");
}
return map;
}
```

topping3:

```public Map<String, String> topping3(Map<String, String> map) {
if (map.containsKey("potato")) {
map.put("fries", map.get("potato"));
}
}
return map;
}
```

mapAB2:

```public Map<String, String> mapAB2(Map<String, String> map) {
if (map.containsKey("a") && map.containsKey("b")) {
if (map.get("a").equals(map.get("b"))) {
map.remove("a");
map.remove("b");
}
}
return map;
}
```

mapAB3:

```public Map<String, String> mapAB3(Map<String, String> map) {
if (map.containsKey("a") && !map.containsKey("b")) {
map.put("b", map.get("a"));
} else if (!map.containsKey("a") && map.containsKey("b")) {
map.put("a", map.get("b"));
}
return map;
}
```

mapAB4:

```public Map<String, String> mapAB4(Map<String, String> map) {
if (map.containsKey("a") && map.containsKey("b")) {
String a = map.get("a");
String b = map.get("b");
if      (a.length() > b.length()) map.put("c", a);
else if (b.length() > a.length()) map.put("c", b);
else {
map.put("a", "");
map.put("b", "");
}
}
return map;
}
```

For further help with Coding Bat (Java), please check out my books. I am also available for tutoring.