关于javaclonelist的信息

今天给各位分享javaclonelist的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、java 的ArrayList如何按值传递?2、java 深克隆问题3、Java。如何将一个LinkedList里的元素全部复制到另一LinkedList容器里?4、JAVA中不同类中List的取值问题,到底哪里错了?5、java list赋值问题?

java 的ArrayList如何按值传递?

java中的参数传递是按值传递。

当传递的是基础类型的值时,那么会将此值复制一份传递。

当传递的是引用类型时候,将会把此引用类型的指针 值复制一份传递。比如:public void test(Person p){….}方法中对p的操作,是直接对P在内容中对应的数据直接操作,而不是将P对应的内容中的数据复制一份传递到test方法中。

将一个arraylist传递给一个方法,那么在方法中将直接操作此引用类型变量在内存中指向的区域中的值。

java 深克隆问题

deepcopy的比较简单的实现方法是所有的类都实现 java.lang.Cloneable 接口。 这样就可以直接clone。否则只能自己遍历,再new了。

关于javaclonelist的信息

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中

}

JAVA中不同类中List的取值问题,到底哪里错了?

空指针异常,JAVA十大低级错误之尾

myCard为null

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

import java.util.Scanner;

/**

 * 发牌游戏

 */

public class PokerGame

{

/**

 * 共有1幅扑克牌,不包括大王和小王共52张牌。

 */

public static final int POKER_NUMBER = 52;

/**

 * 特殊分隔符 _

 */

private static final String T = “_”;

/**

 * 52张牌br /

 * 顺序为黑桃、红心、草花、方块

 */

public static final String[] POKERS = 

{

“A” + T + “0”, “A” + T + “1”, “A” + T + “2”, “A” + T + “3”,

“2” + T + “0”, “2” + T + “1”, “2” + T + “2”, “2” + T + “3”,

“3” + T + “0”, “3” + T + “1”, “3” + T + “2”, “3” + T + “3”,

“4” + T + “0”, “4” + T + “1”, “4” + T + “2”, “4” + T + “3”,

“5” + T + “0”, “5” + T + “1”, “5” + T + “2”, “5” + T + “3”,

“6” + T + “0”, “6” + T + “1”, “6” + T + “2”, “6” + T + “3”,

“7” + T + “0”, “7” + T + “1”, “7” + T + “2”, “7” + T + “3”,

“8” + T + “0”, “8” + T + “1”, “8” + T + “2”, “8” + T + “3”,

“9” + T + “0”, “9” + T + “1”, “9” + T + “2”, “9” + T + “3”,

“10” + T + “0”, “10” + T + “1”, “10” + T + “2”, “10” + T + “3”,

“J” + T + “0”, “J” + T + “1”, “J” + T + “2”, “J” + T + “3”,

“Q” + T + “0”, “Q” + T + “1”, “Q” + T + “2”, “Q” + T + “3”,

“K” + T + “0”, “K” + T + “1”, “K” + T + “2”, “K” + T + “3”

};

/**

 * 原始的扑克牌

 */

public static final String[] ORIAL_POKERS = POKERS.clone ();

/**

 * 发到哪张牌 0

 */

public static int currentIndex = 0;

/**

 * 四种花色

 */

public static final String POKER_COLOR = “黑桃” + T + “红心” + T + “草花” + T + “方块”;

/**

 * 发牌

 * @param n int 一共几个人玩牌

 * @param results 储存发牌结果的数组

 */

public static void drawPoker (int n, String[][] results)

{

int m = n – 1;

if (n == 0)

{

return;

}

int number = (POKER_NUMBER – currentIndex) / n;

while (number  0)

{

String current = POKERS[currentIndex++];

String pk = current.split (“\\” + T)[0].trim ();

int col = Integer.parseInt (current.split (“\\” + T )[1].trim ());

if (null == results[m][col])

{

results[m][col] = pk + ” “;

}

else 

{

results[m][col] += pk + ” “;

}

number–;

}

for ( int i = 0; i  results.length; i++ )

{

for ( int j = 0; j  results[i].length; j++ )

{

if (null == results[i][j])

{

results[i][j] = “”;

}

}

}

drawPoker (–n, results);

}

/**

 * 给牌排序

 * @param orialPokers String 原始扑克牌

 * @param temp String[] 每张花色的扑克牌数组

 */

private static void sortPokers ( final String orialPokers, String[] temp )

{

Arrays.sort (temp, new ComparatorString ()

{

@Override

public int compare ( String o1, String o2 )

{

int index1 = orialPokers.indexOf (o1 + T);

int index2 = orialPokers.indexOf (o2 + T);

if (index1  index2)

{

return -1;

}

else if (index1  index2)

{

return 1;

}

else

{

return 0;

}

}

});

}

/**

 * 洗牌

 */

private static void shufflePokers ( String[] POKERS )

{

Collections.shuffle (Arrays.asList (POKERS));

}

public static void main ( String[] args )

{

System.out.print (“输入人数:”);

Scanner scanner = new Scanner (System.in);

int n = scanner.nextInt ();

scanner.close ();

String[] pColors = POKER_COLOR.split (“\\” + T );

String[][] results = new String[n][pColors.length];

shufflePokers (POKERS);

drawPoker (n, results);

final String poker = Arrays.toString (ORIAL_POKERS);

System.out.println (“\n输出如下:\n”);

for (int i = 0; i  results.length; i++)

{

System.out.println (“第” + ( i + 1 ) + “个人:”);

for ( int j = 0; j  results[i].length; j++ )

{

String[] temp = results[i][j].trim ().split (“\\s+”);

sortPokers (poker, temp);

System.out.println (pColors[j] + “:” + Arrays.toString (temp).replaceAll (“[\\,\\[\\]]”, “”));

}

System.out.println ();

}

}

}

java list赋值问题?

操作:newList = strList

说明:由于strList是一个对象,所以它们之间是按引用传递的,即是说newList和strList这两个对象指向的引用地址是同一个,所以从这个方面,可以说newList和strList是一样的。

操作:改变newList的值,strList也变了?

答:strList的值也是会改变的,这个是因为改变newList的值,即是改变了newList指向地址的值。而二者指向的地址的值是同一个,所以会一起改变。

其实这里主要理解区分好 按值传递 还是 按引用传递。

javaclonelist的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javaclonelist的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 15:13:05
下一篇 2024年3月31日 15:23:15

相关推荐

  • 关于linuxsocket模型的信息

    文件传输聊天室文件传输linux 首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。其次,在命令行中输入:cattest.txttesttxttesttxt。键盘按“回车键”运行shell指令,此时会看到2个文件成功合并到testtxt了。 USB数据线传输:使用USB数据线将手机连接到Linux电脑上,然后在手机中开启“U…

    2024年5月11日
    4100
  • linux当前运行的命令,linux显示当前运行进程的信息

    linux常用命令运行程序linux程序运行命令 1、linux常用命令有pwd命令、cd命令、ls命令、cat命令、grep命令、touch命令、cp命令、mv命令、rm命令、rmdir命令等。linux常用命令: pwd命令 该命令的英文解释为print working directory(打印工作目录)。 2、linux系统常用操作命令linux系统常…

    2024年5月11日
    3900
  • 关于javaawtswing的信息

    AWT和Swing的概述 1、awt包是java最早发布的一款制作ui界面(windows桌面程序)的类文件集合,包含大量诸如button等控件,但是在底层仍然离不开微软的一些dll的支持,所以说穿了,无非是微软控件的“翻版”(包装)一下而已。 2、Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的J…

    2024年5月11日
    2800
  • 关于cat读gpiolinux的信息

    linuxgpio中断可以动态注册和释放吗 使用完 GPIO2_A7 后,需要进行释放。方法:配置 unexport 后, gpio71 节点会消失。 对于中断我们是可以进行开启和关闭的,Linux中提供了以下函数操作单个中断的开关:该方法可以在所有处理器上禁止或启用中断。 在使用完gpio口之后,用gpio_free(unsigned gpio)释放gpi…

    2024年5月11日
    3100
  • 关于ios和java哪个更好2016的信息

    java和iOS哪个好学一点?那个好找工作? 1、如果你的C语言基础比较好的话,可以选择学iOS,因为学iOS需要有Objective-C开发基础。 2、学Java更好好,因为Java应用广泛,除非有一项很大的技术突破能够替代Java。在当下,Java被使用的场景非常多,网站、游戏、办公软件、新零售、云计算、芯片技术、数字经济等多个互联网领域都不开Java,…

    2024年5月11日
    3800
  • 关于excelint函数四舍五入的信息

    Excel取整数的公式有哪些? 在 Excel 中,有多种取整数的公式,常用的取整公式包括: ROUND 函数:将一个数字四舍五入到指定的位数。例如,使用 ROUND(A1,0) 可以将 A1 中的数字取整为整数。 INT 函数:将一个数字向下取整至最接近的整数。 取整数公式一:INT取整 对于正数,截掉小数取整 =INT(16) 结果为 12 对于负数,截…

    2024年5月11日
    3200
  • 关于javasmil的信息

    推荐几个经营类手机wap网游 风林手游盒子 风林手游盒子是一款内容丰富的游戏盒子软件。 《荒野行动》:这是一款以 survival 为主题的游戏,玩家需要在原始世界中生存,收集资源建立自己的基地,和其他玩家进行生死战斗。 策略类比如:王者荣耀、海岛奇兵、地狱边境、投影寻真,等。前两个是网游,后两个是单机。最近出的荒野行动,也算是策略吧。 梦幻西游 梦幻西游的…

    2024年5月11日
    4100
  • 关于javajavabean的信息

    java类和javabean的关系和区别 javabean是类,单是是一种有特殊约定的类。它规定对他的属性进行读写操作的方法的名字必须是这样的:如果有一个属性叫做a,则读取属性的方法叫做getA(),修改属性的方法叫做setA()。 JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。…

    2024年5月11日
    3800
  • 关于linuxreadonlyfile的信息

    linux修改文件只读属性linux修改文件只读 1、开启一个虚拟机,使用ctrl+alt+t或者双击terminal进入终端命令界面。使用vi+文件可以(创建)进入编辑文件,如:visave.c。进入文件后,按“i”或者“a”进入插入模式。下方显示insert,即可开始编辑和修改文件。 2、找到菜单栏的终端窗口,并且点击进入。我们新建一个文件作为示范,并且…

    2024年5月11日
    3400
  • 关于javascriptscheme的信息

    电脑无法启动“javacript:void(0);”,因为该方案没有已注册的处理程序… 1、这个意思其实是你的a()无效。 一般地址是 javascript:void(0)的,真正的操作在 onclick里。 2、这种意思 是为了 不想让别人看到你的链接地址,你可以在href 标签上面加一个onclick事件 。然后在js里面写一个函数,函数里面…

    2024年5月11日
    3900

发表回复

登录后才能评论



关注微信