Java 連續數 分組

來源:互聯網
上載者:User

 要求:將連續數的數分成一組,不連續的分成另一組。如1、2、3、5、7、8,輸出1-3、5-5、7-8。

  

Bean對象儲存分組的最大值和最小值。並提供將某數增加到該分組的方法。代碼如下:

public class Bean{private int minValue;private int maxValue;public boolean add(int value){if (value >= minValue && value <= maxValue){// 已經存在該區間內,do nothingreturn true;}if (value == minValue - 1){// 比最小值小1,拓展最小值minValue = value;return true;}if (value == maxValue + 1){// 比最大值大1,則拓展最大值maxValue = value;return true;}// 其他情況都增加該區間失敗return false;}public int getMinValue(){return minValue;}public void setMinValue(int minValue){this.minValue = minValue;}public int getMaxValue(){return maxValue;}public void setMaxValue(int maxValue){this.maxValue = maxValue;}}

  BeanList類為List集合的簡單封裝。對外也提供將數字加入到某分組的方法,由於加入某個數字,可能會將兩個分組合并成一個分組,如原來1-3和5-6組,加入4後,必須合并為1-6組,如下方法實現邏輯:如果某一個數字加入兩個分組成功,則這兩個分組可以合并。

public class BeanList{private List<Bean> beanList = new ArrayList<Bean>();public void add(int value){Bean existBean = null;for (Bean bean : beanList){if (bean.add(value)){if (existBean != null){// 增加一個資料最多使兩個區間合并merge(bean, existBean);return;}existBean = bean;}}if (existBean == null){addIfNotExist(value);}}private void addIfNotExist(int value){Bean bean = new Bean();bean.setMinValue(value);bean.setMaxValue(value);beanList.add(bean);}private void merge(Bean existBean, Bean deleteBean){if (existBean.getMaxValue() == deleteBean.getMinValue()){existBean.setMaxValue(deleteBean.getMaxValue());beanList.remove(deleteBean);}else if (existBean.getMinValue() == deleteBean.getMaxValue()){existBean.setMinValue(deleteBean.getMinValue());beanList.remove(deleteBean);}}public void print(){for (Bean bean : beanList){System.out.println(bean.getMinValue() + "======" + bean.getMaxValue());}}}

 

 測試類別。BeanList只是簡單將結果列印出來。

public class Test{public static void main(String[] args){List<Integer> list = new ArrayList<Integer>();list.add(8);list.add(10);list.add(9);list.add(1);list.add(3);list.add(4);list.add(5);list.add(7);list.add(6);BeanList beanList = new BeanList();for (Integer aa : list){beanList.add(aa.intValue());}beanList.print();}}

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.