当前位置:首页 » 编程语言 » listjava复制

listjava复制

发布时间: 2023-08-31 08:17:07

‘壹’ java中,复制一个对象,有什么好的方法

使用Java的反射机制实现:为了能更好的区分,写成了两个类,可以运行下面的代码看看效果
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) throws Exception {
Customer1 c1 = new Customer1();
c1.setName("c1");
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
c1.setList(list);
Map<String,String> map = new HashMap<String, String>();
map.put("map1", "map1");
map.put("map2", "map2");
c1.setMap(map);
Customer2 c2 = new Customer2();
//
Class c = c1.getClass();
Class class2 = c2.getClass();
Field fields[] = c.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getMethodName = "get" + firstLetter + fieldName.substring(1);
String setMethodName = "set" + firstLetter + fieldName.substring(1);
Method getMethod = c.getMethod(getMethodName, new Class[] {});
Method setMethod = class2.getMethod(setMethodName,
new Class[] { field.getType() });
Object value = getMethod.invoke(c1, new Object[] {});
setMethod.invoke(c2, new Object[] { value });
}
System.out.println(c2.getName());
System.out.println(c2.getList());
System.out.println(c2.getMap());
}
}
class Customer1 {
private String name;
private List<String> list;
private Map<String, String> map;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
}
class Customer2 {
private String name;
private List<String> list;
private Map<String, String> map;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
}

‘贰’ java把一个list中的内容添加到另一个list中

在JAVA中,想要把一个list中的内容添加至另一个list中,有两种方法:

  1. 采用循环的方法。通过循环第一个ArrayList,然后通过每循环一次的方式,将值赋值给另一个ArrayList。具体代码实现如下:

2.集合是Java API所提供的一系列类,可以用于动态存放多个对象。集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。集合中不能放基本数据类型,但可以放基本数据类型的包装类。 集合类全部支持泛型,是一种数据安全的用法。java列表是集合的一种,并且列表中的元素是有序的,且允许重复。java列表又称为java list。

‘叁’ java怎么将list引用转为值

直接用 newList = oldList 是引用传递,复制的是地址!!!!!!!
改变oldList里的内容同样也会影响到newList

值传递可以用Collections.(newList, oldList)
但需要两个List的大小一样,即复制前还需要给newList指定长度
我认为值传递更方便的是newList.addAll(oldList)

‘肆’ JAVA一个泛型数组List<> 怎么复制某几行到另外一个List<>

你明白一个单纯的“?”是什么意思吗?它代表的是任意类型。既可以是有继承关系的,也可以是八竿子都打不到的。比如你想写的大约是这样的class
gen{pulbic
<?
extends
Number>void
listMove(List
<?>list1
,
List<?>
list2,Int
i){list2.add(list1.get(i));}}但是请注意这里?号代表的是任意一个Number的子类,这意味着你如果传入像list1
是List<Long>而list2是List<Double>这样的同级泛型参数,就像这样来调用这个函数list1
=
new
List<Long
>();list2
=
new
List<Double>();listMove(list1,
list2,
i);这个函数的目的显然是把list1
的第i个元素放入list2中,但是请注意list1和list2是不相同,也没有继承关系的同级别类型,你正试图把一个Long
类型放入一个只能够放置Double类型的List
中,如果java允许你这样来操作元素,那不是和泛型本身希望提高类型安全的目的背道而驰了吗?这个问题里你需要注意的是,想要传递的类型参数是有关系的,lIst1的?号应该是list2的本身或者子类才对,你应该这样定义你的方法,你需要对这两个?号有一定的约束这样来定义public
<
T
extends
Object>/*这里可以是你自己对类型的约束,我都是约束成了Object的*/void
listMove(List<?
extends
T>
list1//有条件的约束,?应该是T的子类,
List<T>
list2
,int
i){
list2.add(list1.get(i));
}

‘伍’ java把一个list里的数据转移到另外一个list

java将一个list里的数据转移到另外一个list,可以使用for语句,一次使用add方法,示例如下:

ArrayListlist1=newArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
ArrayListlist2=newArrayList();
list2.add("4");
for(inti=0;i<list1.size();i++)
{
list2.add(list1.get(i));//开始复制一个list的内容到另外一个list
}
//这样就可以用list2添加list1的所有元素了!。想把他显示出来可以如下
for(inti=0;i<list2.size();i++)
{
System.out.println(list2.get(i));
}

运行结果如下:

‘陆’ java复制List最快方法是什么

估计没有快的。复制都是线性的。用多线程都不见得更快。重新设计算法吧,避免复制
其他的复制方法
List<Integer> a = b.clone();

Collections.(a,b);

‘柒’ java 如何指定原List其中一部分进行复制到新的list

publicstaticvoidmain(String[]args){

List<String>list1=newArrayList<String>();

List<String>list2=newArrayList<String>();list1.add("1");

list1.add("2");

list1.add("3");list2.add("a");//赋值list1前两个到list2中

System.out.println(list2);

list2.addAll(list1.subList(0,2));//可以先按下标截取,再添加

System.out.println(list2);

}

//运行结果如下:
[a]

[a,1,2]

望采纳

‘捌’ Java。如何将一个LinkedList里的元素全部复制到另一LinkedList容器里

LinkedList的Clone()只是浅复制,也就是只能复制对象的引用,而不能再内存中新生成一个对象,所以你复制之后的LinkedList和原始的LinkedList中存储的对象是共享的。
要想不共享,那只能覆盖你原始LinkedList中存放类的Clone()方法,在这个方法中new一个这个类的新实例,将对象的属性赋值给一个新实例。
然后new一个新的LinkedList实例,遍历原始LinkedList中的每个元素,调用这个元素的Clone(),将得到的新元素添加到新的LinkedList中。
大概的代码意思如下
ElementClass是LinkedList中存储的元素的类
public class ElementClass{
private String attributeOne;
......
public void setAttributeOne(String attValue){
this.attributeOne = attValue;
}
/* 覆盖Clone方法,新建一个本类的实例,并将对象的属性值完全复制过去*/
public Object Clone(){
ElementClass newInstance = new ElementClass();//新建一个本类实例
newInstance.setAttributeOne(this.attributeOne);//复制属性
return newInstance;
}
}

LinkedList newList = new LinkedList();//新建一个LinkedList实例
Iterator it = oldList.iterator();获取原始List的遍历器
while(it.hasNext()){
newList .add(((ElementClass) it.next()).clone());//遍历元素,将克隆的新对象加入新的List中
}

热点内容
爱感大黑牛怎么连接安卓手机 发布:2025-02-04 04:41:31 浏览:218
publicftp 发布:2025-02-04 04:41:26 浏览:71
sqlserver超时 发布:2025-02-04 04:39:58 浏览:70
网络推理算法 发布:2025-02-04 04:37:00 浏览:259
c怎么存储数据 发布:2025-02-04 04:31:12 浏览:63
奥迪q3行驶证如何查配置 发布:2025-02-04 04:28:26 浏览:329
ebay商品上传 发布:2025-02-04 04:23:38 浏览:83
linux嵌入式书籍 发布:2025-02-04 03:44:07 浏览:334
sql分组最后一条 发布:2025-02-04 03:38:24 浏览:272
单宫数字奇门算法 发布:2025-02-04 03:33:57 浏览:865