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