将[4,3,2,5,4,3]分割成[4,3,2]、[5,4,3]两个List的算法

  1. package com.srie.test;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. //将[4,3,2,5,4,3]分割成[4,3,2]、[5,4,3]两个List的算法;
  6. public class TestSplitList {
  7. public static void main(String[] args) {
  8. // 原List中的对象元素的list
  9. List<Integer> list = Arrays.asList(new Integer[] { 4, 3, 2, 5, 4, 3 });
  10. System.out.println(list);
  11. T t = new T();
  12. t.setName("t");
  13. t.setList(list);
  14. // 原List
  15. List<T> tList = new ArrayList<T>();
  16. tList.add(t);
  17. // 新List
  18. List<T> newList = new ArrayList<T>();
  19. // 循环原List集合
  20. for (int i = 0, size = tList.size(); i < size; i++) {
  21. T t2 = tList.get(i);
  22. List<Integer> list2 = t2.getList();
  23. // 调用不断拆分的算法
  24. createNewList(newList, t2, list2, 0);
  25. }
  26. System.out.println(newList.size());
  27. System.out.println(newList.get(0).getList());
  28. System.out.println(newList.get(1).getList());
  29. }
  30. private static void createNewList(List<T> newList, T t2, List<Integer> list2, int i) {
  31. T t = new T();
  32. t.setName(t2.getName());
  33. List<Integer> list = new ArrayList<Integer>();
  34. t.setList(list);
  35. Integer shangyige = -1;
  36. for (int j = i, size = list2.size(); j < size; j++) {
  37. Integer dangqian = list2.get(j);
  38. if (j > i) {
  39. if (dangqian > shangyige) {
  40. createNewList(newList, t, list2, j);
  41. break;
  42. }
  43. }
  44. shangyige = dangqian;
  45. list.add(dangqian);
  46. }
  47. newList.add(t);
  48. }
  49. }
  50. class T {
  51. private String name;
  52. private List<Integer> list;
  53. public String getName() {
  54. return name;
  55. }
  56. public void setName(String name) {
  57. this.name = name;
  58. }
  59. public List<Integer> getList() {
  60. return list;
  61. }
  62. public void setList(List<Integer> list) {
  63. this.list = list;
  64. }
  65. }

将[4,3,2,5,4,3]分割成[4,3,2]、[5,4,3]两个List的算法的更多相关文章

  1. 【Paddy】如何将物理表分割成动态数据表与静态数据表

    前言 一般来说,物理表的增.删.改.查都受到数据量的制约,进而影响了性能. 很多情况下,你所负责的业务关键表中,每日变动的数据库与不变动的数据量比较,相差非常大. 这里我们将变动的数据称为动态数据,不 ...

  2. 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里

    JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(i ...

  3. js 字符串分割成字符串数组 遍历数组插入指定DOM里 原生JS效果

    使用的TP3.2 JS字符串分割成字符串数组 var images='{$content.pictureurl} ' ;结构是这样 attachment/picture/uploadify/20141 ...

  4. oracle根据分隔符将字符串分割成数组函数

    --创建表类型 create or replace type mytype as table of number;--如果定义成varchar--CREATE OR REPLACE type myty ...

  5. linux文件分割(将大的日志文件分割成小的)

    linux文件分割(将大的日志文件分割成小的) linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式.Linux下文件合并可以通过cat命令来实现,非常简单. 在L ...

  6. linux文件分割(将大的日志文件分割成小的)【转载】

    linux文件分割(将大的日志文件分割成小的)linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式.Linux下文件合并可以通过cat命令来实现,非常简单. 在Li ...

  7. 如何把一个TXT文本文件按行数分割成多个文本文件

    2011-04-27 12:00:24|  分类: 默认分类 |字号 订阅     网上有很多文本分割软件都是按字节大小来分割的,主要用于小说类的文本分割,对于比较有规则的内容按行数进行分割非常不方便 ...

  8. [LeetCode] Split Array into Consecutive Subsequences 将数组分割成连续子序列

    You are given an integer array sorted in ascending order (may contain duplicates), you need to split ...

  9. 用Python将一个列表分割成小列表

    用Python将一个列表分割成小列表 2018年01月15日 11:09:25 幸福丶如此 阅读数:16842   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

随机推荐

  1. SQL Server 事务及回滚事务的几种方法

    第一种: declare   @iErrorCount   int set@iErrorCount=0 begintran Tran1    insertinto t1(Id, c1) values( ...

  2. FIR滤波器的实现方法(转)

    源:http://blog.sina.com.cn/s/blog_493520900102uy26.html 内容来自于上篇博文,第七章,FIR滤波器 http://blog.sina.com.cn/ ...

  3. 初始化时查看combox的文本内容

    string sql = string.Format("select field_name from pt_temp_field where pt_name = '{0}' and temp ...

  4. codeforce 611B New Year and Old Property

    暴力搞 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> u ...

  5. 2014非专业知识学习---be smart

    非专业部分--构建人生 以书籍和网易公开课为主 (1)理财&投资 基金投资相关,好的书籍? (2)哲学总览 <公正>这个看了大半,需要总结归纳.  (必选) 同时结合哲学史,归纳西 ...

  6. Windows Azure Storage Client Library 2.0 入门

    入门连接如下: http://gauravmantri.com/2012/11/17/storage-client-library-2-0-migrating-table-storage-code/

  7. SpringMVC轻松学习-注解的使用(三)

    根据上一讲的例子,我们下面就注解的使用进行详细说明. 我们采用sprng MVC开发项目时,通常都会采用注解的方式,这样可以大大提高我们的开发效率.实现零配置.下面我们从零开始重新做一个spring ...

  8. Android编程中的5种数据存储方式

    Android编程中的5种数据存储方式 作者:牛奶.不加糖 字体:[增加 减小] 类型:转载 时间:2015-12-03我要评论 这篇文章主要介绍了Android编程中的5种数据存储方式,结合实例形式 ...

  9. (简单) POJ 1321 棋盘问题,回溯。

    Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...

  10. DS5 调试 android c++

    1.修改Application.mk APP_STL := gnustl_static #这里用gnustl #NDK_TOOLCHAIN_VERSION=clang #这里注释掉 APP_CPPFL ...