Using just arrays:
public class q14968543 {
public static void main(String[] args) {
String statePapersInitial[][] = {
{ "Alabama", "BGNB" },
{ "Alaska", "ADNB", "ALKP" },
{ "Arizona", "ADSB" },
{ "Wyoming", "WTEB", "WYOM", "WMPP" }
};
for(String[] papers : selectOnly(statePapersInitial, "Alabama", "Wyoming")) {
for(String paper : papers) {
System.out.print(paper+ " ");
}
System.out.println();
}
}
private static String[][] selectOnly(String[][] statePapers, String ... states) {
String[][] selected = new String[states.length][0];
int index = 0;
for(String state : states) {
for(String[] papers : statePapers) {
if(state.equals(papers[0])) {
selected[index++] = papers;
}
}
}
return selected;
}
}
the output is:
Alabama BGNB
Wyoming WTEB WYOM WMPP
Now an approach that uses Map
s might look like this:
import java.util.*;
public class q14968543 {
public static void main(String[] args) {
Map<String, List<String>> statePapers = new HashMap<>();
statePapers.put("Alabama", Arrays.asList((new String[] {"BGNB"})));
statePapers.put("Alaska", Arrays.asList((new String[] {"ADNB", "ALKP"})));
statePapers.put("Arizona", Arrays.asList((new String[] {"ADSB"})));
statePapers.put("Wyoming", Arrays.asList((new String[] {"WTEB", "WYOM", "WMPP"})));
for(Map.Entry<String, List<String>> state : selectOnly(statePapers, "Alabama", "NOT A STATE", "Wyoming").entrySet()) {
System.out.print(state.getKey()+"=");
for(String paper : state.getValue()) {
System.out.print(paper+ " ");
}
System.out.println();
}
}
private static Map<String, List<String>> selectOnly(Map<String, List<String>> statePapers, String ... states) {
Map<String, List<String>> selected = new HashMap<>();
for(String state : states) {
if(statePapers.containsKey(state)) {
selected.put(state, statePapers.get(state));
}
}
return selected;
}
}
The output of this is:
Wyoming=WTEB WYOM WMPP
Alabama=BGNB
Here you can see that it is ignoring the "NOT A STATE"
that was passed, and it is using the State name as a key as opposed to the first element in an array.