What data structure should I use to store a pair of strings in Java , if my goal is to find unique pairs?
我是Java的初学者。 我有一些节点的示例数据:
1 2 3 4 5 6 7 8 9 10 11 | A -> B B -> F C -> R A -> B B -> C R -> C |
我已经拿出2个清单:[A,B,C,A,B,R]和[B,F,R,B,C,C]
但是,我应该如何存储对[AB,BF,CR,AB,BC,RC],以便找到唯一的对? 通过唯一,我的意思是AB不等于BA。
1)所以基本上我想识别唯一的对。
2)我还想计算每个唯一对出现的次数。
编辑:
3)我也有兴趣找到每个节点连接的节点数。
4)有多少个不同的节点连接到每个节点
我正在努力决定是否真的需要编写自己的类或者是否有更简单的方法?
您可以创建一个自定义类来存储字符串对,然后使用
1 2 3 4 5 6 |
然后你可以使用
1 2 3 4 5 6 7 | Map<StringPair, Integer> pairCountMap = new HashMap<StringPair, Integer>(); if(pairCountMap.containsKey(aPairObject)) { pairCountMap.put(aPairObject, pairCountMap.get(aPairObject)+1); } else { pairCountMap.put(aPairObject, 0); } |
你需要一个类来指定对:
如果你使用
1 2 3 4 | Set<Pair> pairs = new HashSet<Pair>(); .. pairs.add(new Pair(prv, next)); int uniquePairs = pairs.size(); |
如果你使用
1 2 3 |
此外,您可以使用
此外,
要获得原始对总数的计数:
1 2 3 4 5 6 7 8 | Set<Pair> pairs = new HashSet<Pair>(); int count =0; while(..) { //iterating over list of pairs pairs.add(new Pair(prv, next)); count ++; } int uniquePairs = pairs.size(); int totalPairs = count; |
Hashtable(数据结构)应该适合您的要求。在java中,您可以考虑输入
key是字符串对,Integer是count:
就像是:
1 2 3 4 5 6 7 | { "AB":2, "CR":1, "BF":1, ... } |
找到唯一对的复杂性将是
编辑
似乎在这里放置代码有助于解释解决方案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Map<String, Integer> map = new HashMap<String,Integer>(); //you have two lists with those strings, called list1 and list2. // list1<String> and list2<String> have same size String key = null; for(int i=0;i<list1.size();i++){ key = list1.get(i) + list2.get(i); if(map.containsKey(key)) map.get(key)++; else map.put(key,1); } //now the map has been filled, you can go through the map, //and check the value, if value == 1, then the key is unique. //for those value >1, you know, which string pair is not unique, // and how many times it shows. |
代码不是用IDE编写的,所以可能会有拼写错误。