配对字符串值java的最佳方式

时间:2013-04-28 19:55:47

标签: java string data-structures

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

5 个答案:

答案 0 :(得分:1)

可以使用Map,其中包含没有对的字符串的特殊值。

答案 1 :(得分: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
}

不必是通用的,但它允许您在其他情况下重复使用它。

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

答案 2 :(得分:0)

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

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

现在由您决定MyPair班级的内部参数     地图配对=新的HashMap();

答案 3 :(得分: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);
 }

答案 4 :(得分:0)

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

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

...

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

或者使用您想要的任何容器,List这里只是一个示例,点是String[]

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