У меня есть это 2d-Array
[[1, path1, path2, path3, path5],
[0, path1, path3, path5],
[1, path1, path2, path5]]
Я хочу сохранить его элемент в Map
, как это Map<String, Pair<Integer, Integer>> information;
Первое целое число путь счетчика с 1
и целое число se c - это путь счетчика с 0
, поэтому ожидаемый результат выглядит следующим образом.
path1->(2,1) // because the path1 is 2 times appeared with in the 2d-Array with 1 and 1 times with 0.
path2->(2,0)
path3->(1,1)
path5->(2,1)
Это моя попытка, я остановился, потому что не знал, как сравнивать элементы и сохранять их элементы в Map
. импорт java .util. *;
public class HelloWorld {
public static void main(String[] args) {
List < List < String >> all = new ArrayList < > ();
List < String > arr1 = new ArrayList < > ();
arr1.add("1");
arr1.add("path1");
arr1.add("path2");
arr1.add("path3");
arr1.add("path5");
////////
List < String > arr2 = new ArrayList < > ();
arr2.add("0");
arr2.add("path1");
arr2.add("path3");
arr2.add("path5");
////////
List < String > arr3 = new ArrayList < > ();
arr3.add("1");
arr3.add("path1");
arr3.add("path2");
arr3.add("path5");
////////
all.add(arr1);
all.add(arr2);
all.add(arr3);
Map < String, Pair < Integer, Integer >> information;
System.out.println(all);
for (int i = 0; i < all.size(); i++) {
for (int j = 0; j < all.get(i).size(); j++) {
System.out.println(all.get(i).get(j));
}
}
}
public class Pair < L, R > {
private final L left;
private final R right;
public Pair(L left, R right) {
assert left != null;
assert right != null;
this.left = left;
this.right = right;
}
public L getLeft() {
return left;
}
public R getRight() {
return right;
}
@Override
public int hashCode() {
return left.hashCode() ^ right.hashCode();
}
@Override
public boolean equals(Object o) {
if (!(o instanceof Pair)) return false;
Pair pairo = (Pair) o;
return this.left.equals(pairo.getLeft()) &&
this.right.equals(pairo.getRight());
}
}
}