java中LIST 出来的东东 作为参数放进一个方法,方法里改变了LIST,那是否就真的改变了?还是出了这个方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中LIST 出来的东东 作为参数放进一个方法,方法里改变了LIST,那是否就真的改变了?还是出了这个方法相关的知识,希望对你有一定的参考价值。

LIST并没有改变?

不知道你所谓的改变是什么,是给list重新赋值了还是改变了list里面的项,如果是给list重新赋值,原来list指向的list不会改变,如果是改变了里面的项,那就确实变了 参考技术A List是一个对象,传入方法时是作为引用传递的,所以你在方法里面操作的List就是你传进去那个。出了方法当然会改变List。如果你不想改变它,可以在方法里拷贝一个新的List,在上面执行操作。 参考技术B 会改变list
list作为参数传进去时地址传递
所以你只要在新的方法里面更改了list
就会对list造成改变
参考技术C 直接看代码,运行下就知道结果了
打印出来的是
a
b
c

import java.util.ArrayList;
import java.util.List;

public class TestList
public void add(List list,String value)
list.add(value);

public static void main(String[] args)
List list=new ArrayList();
list.add("a");
list.add("b");
TestList t=new TestList();
t.add(list, "c");
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i));


关于tuple 和 list 看点基础的东东

当大量数据时,尽量用tuple
print 80*‘-‘

print sys.getsizeof(objiect)

print dir(sys)
print help(sys.getsizeof)

tuple 的快速写法:
test1 = 1,
test2 = 1
test3 = 1,2,3

a = test3[0]
b = test3[1]
a, b, c = test3

list: [‘append‘, ‘count‘, ‘extend‘, ‘index‘, ‘insert‘, ‘pop‘, ‘remove‘, ‘reverse‘, ‘sort‘]
tuple: [‘count‘, ‘index‘]

所以 list 占用内存多
imagine working with a data set containing 100 million lists or tuples, the bytes quickly add up

另外,list 可变, tuple 不可变immutable
once you make a tuple, it is set in stone

tuples 比 list 更快创建
tuples can be made more quickly than lists

import sys

print dir(sys)

print help(sys.getsizeof)

‘‘‘
getsizeof(...)
    getsizeof(object, default) -> int
    
    Return the size of object in bytes.
‘‘‘

list_eg = [1,2,3,"a","b","c",True,3.14159]
tuple_eg =(1,2,3,"a","b","c",True,3.14159)


print "List size = ", sys.getsizeof(list_eg)
print "tuple size = ", sys.getsizeof(tuple_eg)

技术图片

import timeit

list_test = timeit.timeit(stmt = "[1,2,3,4,5]", number = 1000000)
tuple_test = timeit.timeit(stmt = "(1,2,3,4,5)", number = 1000000)

print "List time: ", list_test
print "Tuple time: ", tuple_test

技术图片

test1 = 1,
test2 = 1
test3 = 1,2,3

print test1
print test2
print test3

a, b ,c = test3
print a,b,c

d = test2
print d

技术图片

还有个 横线写法,我都是按一串 -----

print dir(prime_numbers)

print 80 * "-"

print dir(perfect_squares)











以上是关于java中LIST 出来的东东 作为参数放进一个方法,方法里改变了LIST,那是否就真的改变了?还是出了这个方法的主要内容,如果未能解决你的问题,请参考以下文章

java中,如何将InputStream类型的东东转成FileInputStream类型?

再用python写一个文本处理的东东

深度优先搜索---一个懵逼的东东

一打开带图片的网页,电脑就会自动下载后缀是“.js”的东东,求解答。。。。。。

iOS开发-常见宏定义

模块化教学是一种什么新奇的东东