我需要帮助在分组文本..I有一个像这样的商家列表,我们可以看到,前几个属于CENTURYLINK旁边的智能ATT ..is有一种方法,以分组/标签这些文本的单一标签或分类这些文本根据他们落入的池。
提前感谢
001 CENTURYLINK IREP
003 CENTURYLINK我的帐户
003-ClearTalk无线
004 CENTURYLINK IVR
005 CENTURYLINK循环
006 CENTURYLINK WIFI
007 CENTURYLINK电缆
111智能ATT
112智能ATT
113 -智能ATT
114智能ATT
120 -智能ATT
131 - SMART - ATT
137 - SMART - ATT
无线AMERY
无线安娜
无线APTOS
无线阿卡迪亚
无线阿诺兹标准杆
无线阿什兰
无线的雅典
发布于 2016-06-19 04:16:11
你有几个选择。最简单的方法之一是匹配厂商的子字符串,如下所示:
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;
public class GroupVendors {
public static void main(final String[] args) {
final List<String> vendors = Arrays.asList(
"CENTURYLINK",
"SMART",
"ATT",
"A WIRELESS");
final List<String> uncategorizedVendors = Arrays.asList(
"001 CENTURYLINK IREP",
"003 CENTURYLINK MY ACCOUNT",
"003-ClearTalk Wireless",
"004 CENTURYLINK IVR",
"005 CENTURYLINK RECURRING",
"006 CENTURYLINK WIFI",
"007 CENTURYLINK CABLE",
"111 SMART ATT",
"112 SMART ATT",
"113 - SMART - ATT",
"114 SMART ATT",
"120 - SMART - ATT",
"131 - SMART - ATT",
"137 - SMART - ATT",
"A WIRELESS AMERY",
"A WIRELESS ANNA",
"A WIRELESS APTOS",
"A WIRELESS ARCADIA",
"A WIRELESS ARNOLDS PAR",
"A WIRELESS ASHLAND",
"A WIRELESS ATHENS");
final Map<String, List<String>> categorizedVendors = new TreeMap<>();
for (final String vendor : vendors) {
categorizedVendors.put(vendor, new LinkedList<String>());
}
for (final String vendor : uncategorizedVendors) {
for (final Map.Entry<String, List<String>> entry : categorizedVendors.entrySet()) {
final String category = entry.getKey();
if (vendor.contains(category)) {
final List<String> bin = entry.getValue();
bin.add(vendor);
}
}
}
for (final Map.Entry<String, List<String>> entry : categorizedVendors.entrySet()) {
final String category = entry.getKey();
final List<String> bin = entry.getValue();
System.out.printf("vendors(\"%s\") = {%n", category);
if (!bin.isEmpty()) {
System.out.printf(" %s%n",
bin.stream()
.map((vendor) -> String.format("\"%s\"", vendor))
.collect(Collectors.joining(",\n ")));
}
System.out.println("}");
}
}
}示例运行:
% java GroupVendors
vendors("A WIRELESS") = {
"A WIRELESS AMERY",
"A WIRELESS ANNA",
"A WIRELESS APTOS",
"A WIRELESS ARCADIA",
"A WIRELESS ARNOLDS PAR",
"A WIRELESS ASHLAND",
"A WIRELESS ATHENS"
}
vendors("ATT") = {
"111 SMART ATT",
"112 SMART ATT",
"113 - SMART - ATT",
"114 SMART ATT",
"120 - SMART - ATT",
"131 - SMART - ATT",
"137 - SMART - ATT"
}
vendors("CENTURYLINK") = {
"001 CENTURYLINK IREP",
"003 CENTURYLINK MY ACCOUNT",
"004 CENTURYLINK IVR",
"005 CENTURYLINK RECURRING",
"006 CENTURYLINK WIFI",
"007 CENTURYLINK CABLE"
}
vendors("SMART") = {
"111 SMART ATT",
"112 SMART ATT",
"113 - SMART - ATT",
"114 SMART ATT",
"120 - SMART - ATT",
"131 - SMART - ATT",
"137 - SMART - ATT"
}我假设您感兴趣的供应商类别列表是"CENTURYLINK“、"SMART”、"ATT“和"A WIRELESS”。这样做的效果是对在两个回收站中同时包含"SMART“和"ATT”的所有条目进行分类。如果您希望将每个供应商准确地归入一个库中,那么当类别是多余的时,您将需要确定您更喜欢哪个供应商。
https://stackoverflow.com/questions/37806584
复制相似问题