我有两个字符串
String bookCar = "1_2-2_3-3_4-4_5";
String newBookCar = "3_2-5_6";-代表拼接(需要用split差分)
id _ number 下划线的左边代表书id右边代表数的数量
如何实现如果第二个字符串内的id有跟第一个数的id相同的话
数量相加,如果不是相同就拼接 . 生成一个新字符串
即
1_2-2_3-5_4-4_5-5_6麻烦大神帮小弟看看,麻烦了String
String bookCar = "1_2-2_3-3_4-4_5";
String newBookCar = "3_2-5_6";-代表拼接(需要用split差分)
id _ number 下划线的左边代表书id右边代表数的数量
如何实现如果第二个字符串内的id有跟第一个数的id相同的话
数量相加,如果不是相同就拼接 . 生成一个新字符串
即
1_2-2_3-5_4-4_5-5_6麻烦大神帮小弟看看,麻烦了String
解决方案 »
- socket 问题,纠结!!!
- eclipse开发web,新手指教
- BeanUtils.copyProperty的用法问题
- java this 的一个问题!请教!
- 关于java的异常捕获问题
- 在table的cell中处理checkbox,CellRenderer和CellEditor怎么协同工作?
- 关于java环境配置的 问题~~~!!谁能帮帮忙??
- 100分相送:
- 我好不容易才装完了visualage4.0,怎么找不到visualage的启动文件。启动菜单没有,程序文件夹也没有,请指教。
- ie为什么找不到最新编译过的class文件?
- Java和C#UDP通信问题
- 求解题思路:2013蓝桥杯Java高职高专组第10题
就把两个数量相加
第一个字符串3_2
第二个字符串3_3
然后数量相加
,两个字符串都匹配不到的
将其拼接
1_2-2_3-5_4-4_5-5_6
cookie的value只能存储字符串
第一个字符串代表原cookie内的数据
第二个代表新cookie的数据
如果相同,数量累加,如果不同拼接
String bookCar = "1_2-2_3-3_4-4_5";
String newBookCar = "3_2-5_6";
String newCar = "";
String[] bookCarArr = bookCar.split("-");
String[] newBookCarArr = newBookCar.split("-");
Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
for (String key : bookCarArr) {
String[] a = key.split("_");
map.put(Integer.valueOf(a[0]), Integer.valueOf(a[1]));
}
for (String key : newBookCarArr) {
String[] a = key.split("_");
Integer k = Integer.valueOf(a[0]);
Integer v = Integer.valueOf(a[1]);
if (map.containsKey(k)) {
map.put(k, map.get(k) + v);
} else {
map.put(k, v);
}
}
for (Integer key : map.keySet()) {
newCar += (key + "_" + map.get(key) + "-");
}
newCar = newCar.substring(0, newCar.length() - 1);
System.out.println(newCar);
System.out.println("===================");
package test;public class Insert2 {
public static void main(String[] args) {
System.out.println("===================");
// 1_1-2_6-3_3-5_5
String cartValue = "1_1-2_2-3_3";
String buyBook = "2_4-5_5";
String[] bookInfoArray = cartValue.split("\\-");
String[] buyBookInfoArray = buyBook.split("\\-");
String newCartValue = ""; for (int i = 0; i < bookInfoArray.length; i++) {
boolean isFindBookId = false; String bookId = bookInfoArray[i].split("\\_")[0];
String bookNum = bookInfoArray[i].split("\\_")[1]; String buyBookId = "";
String buyBookNum = "";
for (int j = 0; j < buyBookInfoArray.length; j++) {
buyBookId = buyBookInfoArray[j].split("\\_")[0];
buyBookNum = buyBookInfoArray[j].split("\\_")[1];
if (bookId.equals(buyBookId)) {
isFindBookId = true;
break;
}
} if (isFindBookId == true) {
newCartValue = newCartValue
+ "-"
+ bookId
+ "_"
+ (Integer.parseInt(bookNum) + Integer
.parseInt(buyBookNum));
} else {
newCartValue = newCartValue + "-" + bookId + "_" + bookNum;
} } if (newCartValue.charAt(0) == '-') {
newCartValue = newCartValue.substring(1);
} bookInfoArray = newCartValue.split("\\-"); for (int i = 0; i < buyBookInfoArray.length; i++) {
boolean isFindBookId = false;
String buyBookId = buyBookInfoArray[i].split("\\_")[0];
String buyBookNum = buyBookInfoArray[i].split("\\_")[1]; for (int j = 0; j < bookInfoArray.length; j++) {
String bookId = bookInfoArray[j].split("\\_")[0];
String bookNum = bookInfoArray[j].split("\\_")[1]; if (bookId.equals(buyBookId)) {
isFindBookId = true;
break;
}
} if (isFindBookId == false) {
newCartValue = newCartValue + "-" + buyBookId + "_"
+ buyBookNum;
}
} if (newCartValue.charAt(0) == '-') {
newCartValue = newCartValue.substring(1);
}
System.out.println("===================");
System.out.println(newCartValue); }
}
String newBookCar = "3_2-5_6";1_2-2_3-3_6-4_5-5_6大神 您的
3-3应该变成 3 -5
两个字符串有相同的id需要相加,
其他的都对,您加到id为4的上面去了
先是两个字符串
String bookCar = "1_2-2_3-3_4-4_5";
String newBookCar = "3_2-5_6";
1_2
1是id,2是数量
两个字符串差分
遍历判断
如果第一个数据内的id与第二个数据的id相同
两个的数量就相加
3_3与3_2
的id相同他们的数量相加
其他的没有匹配上的拼接成一个新的string语句
结果是
1_2-2_3-5(id相同数量相加)_4-4_5-5_6
import java.util.TreeMap;public class BookCar { public static String merge(String bookCar,String anotherCar){
TreeMap<String, Integer> mapping = new TreeMap<String, Integer>();
for(String book : bookCar.split("\\-")){
String info[] = book.split("\\_");
mapping.put(info[0], Integer.parseInt(info[1]));
}
for(String book : anotherCar.split("\\-")){
String info[] = book.split("\\_");
if(mapping.get(info[0])==null){
mapping.put(info[0], Integer.parseInt(info[1]));
}else{
int count = mapping.get(info[0]);
mapping.put(info[0], count+Integer.parseInt(info[1]));
}
}
StringBuilder buff = new StringBuilder();
for(Entry<String, Integer> book : mapping.entrySet()){
buff.append(book.getKey()).append('_').append(book.getValue()).append('-');
}
if(buff.charAt(buff.length()-1)=='-'){
buff.deleteCharAt(buff.length()-1);
}
return buff.toString();
}
/**
* 测试用例
*/
public static void main(String[] args) {
String bookCar = "1_2-2_3-3_4-4_5";
String newBookCar = "3_2-5_6";
String merge = merge(bookCar, newBookCar);
System.out.println(merge);
}}
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String bookCar = "1_2-2_3-3_4-4_5";
String newBookCar = "3_2-5_6";
String bctemp="";
String nbctemp="";
String bc[]=bookCar.split("-");
String nbc[]=newBookCar.split("-"); for(int i=0;i<bc.length;i++){
nbctemp="";
for(int j=0;j<nbc.length;j++){
if(!nbc[j].equals("")&&bc[i].substring(0, 1).equals(nbc[j].substring(0, 1))){
bc[i]=bc[i].substring(0, 2)+(Integer.parseInt(nbc[j].substring(2, 3))+Integer.parseInt(bc[i].substring(2, 3)));
nbc[j]="";
}
if(i==bc.length-1){
if(!nbc[j].equals("")){
nbctemp+=nbc[j];
if(j<nbc.length-1){
nbctemp+="-";
}
}
}
}
if(nbctemp.length()<=0&&i==bc.length-1){
bctemp+=bc[i];
}else{
bctemp+=bc[i]+"-";
}
}
System.out.println((bctemp+nbctemp));
}}