最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java8 集合 多字段 分組 統(tǒng)計(jì)個(gè)數(shù)代碼

 更新時(shí)間:2020年08月26日 09:43:31   作者:weixin_36754290  
這篇文章主要介紹了java8 集合 多字段 分組 統(tǒng)計(jì)個(gè)數(shù)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧

1.user實(shí)體

package com.demo.dto;
public class User {
  private Integer id;
  private String userName;
  private String password;
  private Integer age;  
  private long c; 

  public User() {
    super();
    // TODO Auto-generated constructor stub
  }

  public User(Integer id, String userName, String password, Integer age) {
    super();
    this.id = id;
    this.userName = userName;
    this.password = password;
    this.age = age;
  }

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName == null ? null : userName.trim();
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password == null ? null : password.trim();
  }

  public Integer getAge() {
    return age;
  }

  public void setAge(Integer age) {
    this.age = age;
  }

  public long getC() {
    return c;
  }

  public void setC(long l) {
    this.c = l;
  }

  @Override
  public String toString() {
    return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", age=" + age + ", c=" + c
        + "]";
  }
  public static void main(String[] args) {
    
    User u1=new User(1, "aa", "aap", 23);
    User u2=new User(2, "aa", "aap", 23);
    User u3=new User(3, "bb", "aap", 23);
    User u4=new User(4, "cc", "aap", 23);
    User u5=new User(5, "cc", "aap", 23);
    User u6=new User(6, "cc", "aap", 23);
    User u7=new User(7, "aa", "aap", 24);
    List<User> list=new ArrayList<User>();
    list.add(u1);list.add(u2);list.add(u7);list.add(u3);list.add(u4);list.add(u5);list.add(u6);
//原有l(wèi)ist(根據(jù)第二個(gè)字段:userName和第四個(gè)字段:age 統(tǒng)計(jì)重復(fù)的記錄數(shù))
//jdk8的方法統(tǒng)計(jì)個(gè)數(shù):
Map<String, Map<Integer, Long>> map = list.stream().collect(Collectors.groupingBy(User::getUserName,Collectors.groupingBy(User::getAge,Collectors.counting())));
//jdk8以下:
    Map<String,Map<Integer,Long>> map=new HashMap<String,Map<Integer,Long>>();
    for (User user1 : list) {
        Map<Integer, Long> value=new HashMap<Integer,Long>();
        long count=0;
        if(map.containsKey(user1.getUserName())){
          continue;
        }
        for(int i=0;i<list.size();i++){
          if(user1.getUserName().equals(list.get(i).getUserName())&&user1.getAge()==list.get(i).getAge()){
            count+=1;
            value.put(user1.getAge(),count);
            map.put(user1.getUserName(), value);
          }else if(user1.getUserName().equals(list.get(i).getUserName())&&user1.getAge()!=list.get(i).getAge()){
            value.put(list.get(i).getAge(),Long.valueOf(1));
            map.put(user1.getUserName(), value);
          }
        }
    }
    map.forEach((k, v) -> {
      System.out.println(k+">>>>"+v);
    });
    List<User> list2=new ArrayList<User>();
    list.forEach(user ->{
      map.forEach((k, v) -> {
        if(k==user.getUserName()){
          Long remove = v.remove(user.getAge());
          user.setC(null==remove?0:remove);
        }
      });
      list2.add(user);
    });
    //遍歷最后想要的結(jié)果(User中c為統(tǒng)計(jì)后的個(gè)數(shù),方便前臺(tái)遍歷集合時(shí)單元格合并行)
    list2.forEach(u ->{
      System.out.println(u);
    });
    
  }
}

備注:運(yùn)行結(jié)果如下

cc>>>>{23=3}
bb>>>>{23=1}
aa>>>>{23=2, 24=1}
User [id=1, userName=aa, password=aap, age=23, c=2]
User [id=2, userName=aa, password=aap, age=23, c=0]
User [id=7, userName=aa, password=aap, age=24, c=1]
User [id=3, userName=bb, password=aap, age=23, c=1]
User [id=4, userName=cc, password=aap, age=23, c=3]
User [id=5, userName=cc, password=aap, age=23, c=0]
User [id=6, userName=cc, password=aap, age=23, c=0]

此處是為了實(shí)現(xiàn)如下效果:

補(bǔ)充知識(shí):List集合中元素按照固定數(shù)量進(jìn)行分組

最近做項(xiàng)目,被要求將全國(guó)所有省份在頁(yè)面中展示出來(lái),但是要求

1、字少的三個(gè)省份占一行

2、字多的兩個(gè)省份占一行

想來(lái)想去只能想到查詢出所有省份,然后分組返回?cái)?shù)據(jù),上代碼

public Map<String,Object> campus_list_provence(HttpServletRequest request,HttpServletResponse response)throws Exception{
		Map<String,Object> map=new HashMap<String,Object>();
		String sql="查詢所有省份的名稱,可以先在數(shù)據(jù)庫(kù)中將全國(guó)所有省份建一個(gè)表";
		List<String> list=bd.getSQLList(sql);
    //創(chuàng)建第一個(gè)list1,里面存入省份名稱少于4個(gè)字的
		List<String> list1=new ArrayList<String>();
    //創(chuàng)建第二個(gè)list2,里面存入省份名稱大于4個(gè)字的
		List<String> list2=new ArrayList<String>();
		if(list!=null&&list.size()>0){
			for (String string : list) {
				if(string.length()>4){
					list2.add(string);
				}else{
					list1.add(string);
				}
			}
		}
		int keyToken = 0;
		int toIndex=3;
		List<Object> listSortMap = new ArrayList<Object>();
		for(int i = 0;i<list1.size();i+=3){
      if(i+3>list1.size()){    //作用為toIndex最后沒有3條數(shù)據(jù)則剩余幾條newList中就裝幾條
        toIndex=list1.size()-i;
      }
    List newList = list1.subList(i,i+toIndex);
    keyToken++;
    listSortMap.add(newList);
    }
		int keyToken2 = 0;
		List<Object> listSortMap2 = new ArrayList<Object>();
		for(int i = 0;i<list2.size();i+=2){
			if(i+2>list2.size()){    //作用為toIndex最后沒有2條數(shù)據(jù)則剩余幾條newList中就裝幾條
				toIndex=list2.size()-i;
			}
			List newList2 = list2.subList(i,i+toIndex);
			keyToken2++;
			listSortMap2.add(newList2);
		}
		map.put("prov1", listSortMap);
		map.put("prov2", listSortMap2);
		return map;
	}

頁(yè)面接收

function campus_list_ByProvence(req_data){
	$.ajax({ 
    type : "POST", 
    url : "剛才方法的url", 
    traditional: true,
    data : req_data,
    timeout : 20000, 
    cache : false,
    beforeSend : function(XMLHttpRequest) {}, 
    success : function(data) {
    	/* 生成html */
    	$('#campus_list_provence').html(campus_list_ByProvenceHtml1(data.prov1,data.prov2));   	
    }, 
    error : function() { alert("ajax失??!");} 
	});
}
function campus_list_ByProvenceHtml1(prov,prov2){
	var html = "";
	for(var i = 0 , j = prov.length ; i < j ; i++){
		html+='<li class="li1" >';
		if(prov[i][0]!=undefined&&prov[i][0]!=null&&prov[i][0]!=""){
			var provstr0="'"+prov[i][0]+"'";
			html+='<a href="#2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="GoToUrlItem('+provstr0+');">'+prov[i][0]+'</a>';
		}else{
			html+='';
		}
		if(prov[i][1]!=undefined&&prov[i][1]!=null&&prov[i][1]!=""){
			var provstr1="'"+prov[i][1]+"'";
			html+='<a href="#2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="GoToUrlItem('+provstr1+');">'+prov[i][1]+'</a>';
		}else{
			html+='';
		}
		if(prov[i][2]!=undefined&&prov[i][2]!=null&&prov[i][2]!=""){
			var provstr2="'"+prov[i][2]+"'";
			html+='<a href="#2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="GoToUrlItem('+provstr2+');">'+prov[i][2]+'</a>';
		}else{
			html+='';
		}
		html+='</li>';
	}
	for(var i = 0 , j = prov2.length ; i < j ; i++){
		html+='<li class="li2" >';
		if(prov2[i][0]!=undefined&&prov2[i][0]!=null&&prov2[i][0]!=""){
			var pro2vstr0="'"+prov2[i][0]+"'";
			html+='<a href="#2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="GoToUrlItem('+pro2vstr0+');">'+prov2[i][0]+'</a>';
		}else{
			html+='';
		}
		if(prov2[i][1]!=undefined&&prov2[i][1]!=null&&prov2[i][1]!=""){
			var prov2str1="'"+prov2[i][1]+"'";
			html+='<a href="#2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="GoToUrlItem('+prov2str1+');">'+prov2[i][1]+'</a>';
		}else{
			html+='';
		}
		html+='</li>';
	}
	return html ;
}

感覺這樣寫好麻煩,不過最后還好弄出來(lái)了,如果有更好的方法請(qǐng)告訴我一下

頁(yè)面展示:

以上這篇java8 集合 多字段 分組 統(tǒng)計(jì)個(gè)數(shù)代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Spring boot+CXF開發(fā)WebService Demo

    詳解Spring boot+CXF開發(fā)WebService Demo

    這篇文章主要介紹了詳解Spring boot+CXF開發(fā)WebService Demo,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • 解決lombok 父類和子類builder不兼容的問題

    解決lombok 父類和子類builder不兼容的問題

    這篇文章主要介紹了解決lombok 父類和子類builder不兼容的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • JCommander解析命令行參數(shù)使用詳解

    JCommander解析命令行參數(shù)使用詳解

    這篇文章主要為大家介紹了JCommander解析命令行參數(shù)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java中List轉(zhuǎn)字符串的5種方法解析

    Java中List轉(zhuǎn)字符串的5種方法解析

    在Java中將一個(gè)List轉(zhuǎn)換為字符串有多種方法,下面這篇文章主要給大家介紹了關(guān)于Java中List轉(zhuǎn)字符串的5種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法詳解

    Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法詳解

    今天帶大家學(xué)習(xí)的是Java8新特性的相關(guān)知識(shí),文章圍繞著Java接口中的默認(rèn)方法和靜態(tài)方法展開,文中有非常詳細(xì)的的代碼示例,需要的朋友可以參考下
    2021-06-06
  • ant使用指南詳細(xì)入門教程

    ant使用指南詳細(xì)入門教程

    這篇文章主要介紹了ant使用指南詳細(xì)入門教程,本文詳細(xì)的講解了安裝、驗(yàn)證安裝、使用方法、使用實(shí)例、ant命令等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • SpringBoot統(tǒng)一數(shù)據(jù)返回的方法實(shí)現(xiàn)

    SpringBoot統(tǒng)一數(shù)據(jù)返回的方法實(shí)現(xiàn)

    在前后端交互過程中,為了便于數(shù)據(jù)處理,后端數(shù)據(jù)需要進(jìn)行統(tǒng)一封裝返回給前端,這種做法不僅方便前后端溝通,降低了溝通成本,還有助于項(xiàng)目的統(tǒng)一維護(hù)和后端技術(shù)部門的規(guī)范制定,本文就來(lái)介紹一下
    2024-10-10
  • Java獲取文件ContentType案例

    Java獲取文件ContentType案例

    這篇文章主要介紹了Java獲取文件ContentType案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-08-08
  • 淺析fastjson2時(shí)間序列化和反序列化的簡(jiǎn)單使用

    淺析fastjson2時(shí)間序列化和反序列化的簡(jiǎn)單使用

    在項(xiàng)目中將fastjson升級(jí)為fastjson2后,我們遇到了一些與fastjson不完全兼容的問題,所以本文就來(lái)探討下fastjson2的時(shí)間序列化和反序列化的簡(jiǎn)單使用吧
    2025-01-01
  • Spring Security動(dòng)態(tài)權(quán)限的實(shí)現(xiàn)方法詳解

    Spring Security動(dòng)態(tài)權(quán)限的實(shí)現(xiàn)方法詳解

    這篇文章主要和小伙伴們簡(jiǎn)單介紹下 Spring Security 中的動(dòng)態(tài)權(quán)限方案,以便于小伙伴們更好的理解 TienChin 項(xiàng)目中的權(quán)限方案,感興趣的可以了解一下
    2022-06-06

最新評(píng)論

资讯 | 浮山县| 兰州市| 阜平县| 青铜峡市| 崇信县| 酒泉市| 青河县| 安陆市| 淮阳县| 辽宁省| 红安县| 平遥县| 本溪市| 中宁县| 湟中县| 建瓯市| 额济纳旗| 安新县| 屏东市| 南靖县| 宣威市| 秀山| 岑溪市| 昔阳县| 澜沧| 根河市| 乌审旗| 宁明县| 武陟县| 修文县| 盱眙县| 阳东县| 陕西省| 云霄县| 临泉县| 察雅县| 固始县| 赣州市| 邳州市| 苏州市|