0

我想要一些方法来配对String值并将其作为数据结构传递。有什么建议吗?会Map工作吗?我遇到的问题Map是,并非所有字符串都会在这种情况下配对,只有少数字符串会配对。我需要拥有所有字符串,如果存在一个,它也是字符串对。如果有什么不清楚的地方,请告诉我。

4

5 回答 5

1

好吧,这可能不是最好的方式,但我有时使用的是类似于 Python 的元组的双工类型结构。

我建立了一个像这样的通用结构:

class Duplex<T,T> {
 private T item1, item2;
 public Duplex(T one){
  item1 = one;
 }
 public Duplex(T one, T two){
  item1 = one;
  item2 = two;
}
 //Getters + Accessors
}

不必是通用的,但它可以让您在其他情况下重用它。

不过我之前没有使用过地图,所以这些实际上可能会更好。

于 2013-04-28T19:58:59.593 回答
1

Map可以使用A ,对于没有对的字符串有一个特殊的值。

于 2013-04-28T19:57:58.290 回答
0

地图将为您提供所需的键值对。你可能想要的是这样的:

class MyPair  
{  
    String first;  
    String second;  
   // Equals and Hashcode
}  

现在由您决定MyPair类的内部参数。
映射配对 = new HashMap();

于 2013-04-28T19:59:33.100 回答
0

由于您的大多数元素都是一个字符串,因此我建议您也将您的对转换为字符串。

 public static final String SEP = "\uFFFF"; // not a valid character by definition.

 public static String pair(String a, String b) {
     return a + SEP + b;
 }

 public static String[] split(String str) {
     return str.split(SEP);
 }
于 2013-04-28T20:07:32.853 回答
0

一种直接的方法是使用数组。

List<String[]> pairs = new ArrayList<String[]>();

...

pairs.add(new String[]{"first", "second"});
pairs.add(new String[]{"pairless"});

或者使用任何你想要的容器,List这里只是一个例子,point is String[].

注意:使用普通数组有点“快速而肮脏”,创建自定义“Pair”类更“合适”。特别是如果您有在单对上操作的方法,那么创建一个包含它们的类是有意义的。在该类中,您仍然可以在内部使用这种数组来存储 1 个或 2 个(或其他数量的)项目。

于 2013-04-28T20:17:09.250 回答