黑马程序员技术交流社区
标题:
关于集合
[打印本页]
作者:
何竹冬
时间:
2013-1-4 16:39
标题:
关于集合
本帖最后由 何竹冬 于 2013-1-6 13:46 编辑
毕向东老师的一个课后练习题
将List列表中的部分元素替换成指定元素
老是编译错误,怎么解决
package cn.he.javabase;
import java.util.*;
/*
将List集合中的部分元素替换成制定元素
我的思路是:
1.先获取到指定子列表,赋值给一个新列表
2.将子列表中的元素替换成指定元素
3.删除子列表。
4.在指定位置添加新列表
*/
public class ReplaceSubList
{
public static void replace(ArrayList<String> list,int start,int end,String key)
{
List<String> alist = list.subList(start,end);//第一步
Collections.fill(alist,key);//第二步
list.removeRange(start,end);//第三步
list.addAll(start,alist);//第四步
}
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("java01");
list.add("java02");
list.add("java03");
list.add("java04");
list.add("java05");
System.out.println(list);
replace(list,1,3,"java");
System.out.println(list);
}
}
复制代码
编译提示
---------- java编译程序 ----------
ReplaceSubList.java:9: removeRange(int,int) 可以在 java.util.ArrayList 中访问 protected
list.removeRange(start,end);
^
1 错误
输出完成 (耗时: 0 秒) - 正常终止
作者:
王钊
时间:
2013-1-4 17:27
需要这么麻烦吗?用个for循环从start到end索引,使用set(int index,E element)不就行了。。
作者:
王少雷
时间:
2013-1-4 17:36
API中 这个方法是 protected void 这里肯定不能用了。
应该 利用JAVA反射获取类对象,才能调用 。
百度吧,应该有这个示例。
作者:
焦健
时间:
2013-1-4 21:53
import java.util.*;
public class ReplaceSubList
{
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("java01");
list.add("java02");
list.add("java03");
list.add("java04");
list.add("java05");
System.out.println(list);
List<String> l2=res(list,1,3,"java");
System.out.println(l2);
}
/**该方法用于更改集合中start到end的元素为key,返回已个新的集合,包含头不包含尾*/
public static <T> T res( T list,int start,int end,String key){
//创建迭代器
Iterator<String> it=((ArrayList)list).iterator();
//创建一个集合
List<T> l1=new ArrayList<T>();
//对参数集合进行遍历
for(int x=0;it.hasNext();x++){
if(x>=start && x<end){//判断,如果在start和end之间,就在新集合中加入key对象
it.next();//取一次参数集合元素,使它直接判断下一个元素
l1.add((T) key);
}
else{//不再start和end范围之内,将参数集合中的元素添加到新的集合中
l1.add((T) it.next());
}
}
return (T) l1;//返回新的集合
}
}
这个同样能够实现你说的功能。。返回一个替换元素后的集合
作者:
夏振博
时间:
2013-1-4 22:20
本帖最后由 arno942 于 2013-1-4 22:24 编辑
//没有你想的那么麻烦 集合里有set替换方法 ,集合里有增删改查方面的方法
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("java01");
list.add("java02");
list.add("java03");
list.add("java04");
list.add("java05");
//调用set()方法,给指定位置替换指定的元素
String str = list.set(3, "java");
System.out.println(list);
}
}
复制代码
作者:
何竹冬
时间:
2013-1-6 13:45
焦健 发表于 2013-1-4 21:53
import java.util.*;
public class ReplaceSubList
呵呵,泛型用的不错,虽然没试,谢谢了。
作者:
Fateˉ似命守护
时间:
2013-1-7 15:55
懂了{:soso_e121:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2