日期:2014-05-20  浏览次数:20694 次

关于获取数组index的一个算法
大虾们好:
  小弟最近遇到一个算法上的困扰如题:List<ArrayList>有这样一个双层数组,
每一个子Arraylist中存放着一些数据 
如:List<String> array1 = new ArrayList<String>();
array1.add("11");
array1.add("22");
array1.add("33");
array1.add("44");
List<String> array2 = new ArrayList<String>();
array2.add("cc");
array2.add("dd");
array2.add("ee");
List<String> array3 = new ArrayList<String>();
array3.add("11");
array3.add("22");
array3.add("33");
array3.add("44");

List<List> arrAll = new ArrayList<List>();
arrAll.add(array1);
arrAll.add(array2);
arrAll.add(array3);

现在看到有array1,与array3,他们数据相同,现在问题是:如何获取这些相同数据所在总的List中的下标index,因为默认情况下是获得最先出现的index,和我预期的结果不一样。(indexOf,但这个只能获得最先出现这个值得下标),所以请求帮助。

------解决方案--------------------
arrAll.add(array1);
arrAll.add(array2);
arrAll.add(array3.removeAll(array1));
这样呢?
------解决方案--------------------
indexOf,但这个只能获得最先出现这个值得下标

都知道用indexOf,就不会再往深一点考虑

首先,如果只有两个相同的,可以使用lastIndexOf获取后一个
如果有多个的,可以indexOf以后,再取一个subList从indexOf获得的位置到最后,然后再从subList中indexOf,依次处理,直到查找结束。


------解决方案--------------------
楼主这个要求有什么意义吗?list里放很多相同的值,然后分别取它们的下标。

建议采取其它的处理方式。也许实际中不一定非得把这些子list都放在一个大list中。
------解决方案--------------------
楼上的方法还不错,另外方法调用上还有个错误,应该是arrAll.addAll(array1);
------解决方案--------------------
在你另一帖子里给了一些sample的代码和思路,可以参考根据需求修改
http://topic.csdn.net/u/20110619/11/31798a34-7830-4889-9c59-29ad849d0a33.html
------解决方案--------------------
建议你自己遍历整个数组,两行代码就够了
效率比建sublist再取indexOf还要高