有一個集合,存了三個年份:
List<String> str = new ArrayList<>();
str.add("2016");
str.add("2017");
str.add("2018");
有另一個集合:
class Bean {
private String year;
private String cnt;
// get set.....
}
List<String> str2 = new ArrayList<>();
str2.add(Bean); // bean的year為2016 cnt為100
str2.add(Bean);// bean的year為2017 cnt為150
第三個集合:
List<String> str3 = new ArrayList<>();
現(xiàn)在要求拿str2去對比str1,如果str2的Bean已經(jīng)存在str1中年份的則插入str3,如果不存在則想str3插入這個不存在的年份,cnt為0,最終str3的數(shù)據(jù)應(yīng)該是:
// bean的year為2016 cnt為100
// bean的year為2017 cnt為100
// bean的year為2018 cnt為0
不知道有沒有描述清楚,思考了很久,是在是不知道怎么寫了、總是str3有重復(fù)數(shù)據(jù)。
貼出來的代碼泛型都有問題,希望對你有用
import java.util.ArrayList;
import java.util.List;
public class Answer {
public static void main(String[] args) {
List<String> str = new ArrayList<>();
str.add("2016");
str.add("2017");
str.add("2018");
List<Bean> str2 = new ArrayList<>();
// bean的year為2016 cnt為100
str2.add(new Bean("2016","100"));
// bean的year為2017 cnt為150
str2.add(new Bean("2017","150"));
List<Bean> str3 = new ArrayList<>();
deal(str, str2, str3);
System.out.println(str3);
}
private static void deal(List<String> str, List<Bean> str2, List<Bean> str3) {
//存儲交集
List<String> years = new ArrayList<>();
for (Bean temp : str2) {
if (str.contains(temp.getYear())) {
years.add(temp.getYear());
str3.add(temp);
} else {
temp.setCnt("0");
str3.add(temp);
}
}
for (String s : str) {
if (!years.contains(s)) {
str3.add(new Bean(s, "0"));
}
}
}
}
class Bean {
private String year;
private String cnt;
public Bean() {
}
public Bean(String year, String cnt) {
this.year = year;
this.cnt = cnt;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Bean{");
sb.append("year='").append(year).append('\'');
sb.append(", cnt='").append(cnt).append('\'');
sb.append('}');
return sb.toString();
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getCnt() {
return cnt;
}
public void setCnt(String cnt) {
this.cnt = cnt;
}
}
List<String> str1 = new ArrayList<>();
str1.add("2016");
str1.add("2017");
str1.add("2018");
List<Bean> str2 = new ArrayList<>();
str2.add(new Bean("2016", "100"));
str2.add(new Bean("2017", "150"));
List<String> str3 = new ArrayList<>();
List<String> temp = new ArrayList<>();
str2.stream().forEach(bean -> {
temp.add(bean.getYear());
});
str1.stream().forEach(str -> {
if(temp.contains(str)){
str3.add(str2.get(temp.indexOf(str)).toString());
}else{
str3.add(new Bean(str,"0").toString());
}
});
System.out.println(str3.toString());北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。