java list 元素替换问题

java list 元素替换问题,第1张

这个有点不是太清楚,list中名为a的元素,那就是a了,你说的是map中的a 替换吧,
那样list2set('a',list1get('a')),就可以了,
是不是类似这个意思,String a='123';
List<String> list1=new ArrayList<String>();
List<String> list2=new ArrayList<String>();
list1add(a);
a='4567';
list2add(a);
你想把list1中a元素的值替换为list2的a元素的值?这样其实是不行的,因为这里面的a相当于个中间引用,真正存进去的是‘123’和‘4567’,list1,list2里面存在的就只有这个值,没有a,这是由于java机制是值copy过去的,是不能这样使用的,你可以使用map

if(listsize()-number==1)这个一定会成立,因为int number=listsize()-1

List<Item> list =itemDaofindList(param);
int number=listsize()-1;
int k=0;
for(Item item:list){
    if(number==k){// number等于297,当k等于297,也就是在最后一条时执行命令
        Opa pa = new Opa();
        pasetName("李刚");
        opaDaoupdate(pa);
    }
    k++;
}

import copy
List2=copydeepcopy(List1)
这样赋值,List2初始值和List1一样,因为是深度复制List1中的元素,所有深层元素都引用的是不同的对象,List1的任何改变不会影响List2

////////////////that's mine
import javautil;
public class StudentSorter{
public static void main(String [] as){

Student a = new Student("a", 80);

Student b = new Student("b", 90);

Student c = new Student("c", 70);

List<Student> list = new ArrayList<Student>();

listadd(a);

listadd(b);

listadd(c);

Systemoutprintln("未修改前:");

for(Student s: list){

Systemoutprintln(s);

}

asetMark(100);

listset(0, a);

Systemoutprintln("已修改后:");

for(Student s: list){

Systemoutprintln(s);

}
}
}
class Student implements Comparable{
private String name;

private int mark;
public Student(){}
public Student(String n, int m) {

name = n;

mark = m;

}
public void setMark(int m){

mark = m;

}
public int getMark(){
return mark;

}
public int compareTo(Object o) {

if(o instanceof Student) {

Student s = (Student)o;

return sgetMark() - thisgetMark();

} else {

return -1;

}
}
public String toString(){

return name + ": " + mark;

}
}

做法就是上面的。

扩展资料:

java中ArrayList用法详解

基本的ArrayList,长于随机访问元素,但是在List中间插入和移除元素时较慢,并且ArrayList的 *** 作不是线程安全的。

一般在单线程中才使用ArrayList,而在多线程中一般使用Vector或者CopyOnWriteArrayList。

1、使用ArrayList 简单的例子:

ArrayList<Integer> a=new ArrayList<Integer>();

for(int i=0; i<n; i++){

aadd(scnextInt());  //为数组增加int型数

}

aremove(0);//删除第一个元素;

m=2;

aadd(m);  //在数组末尾添加

aadd(4,2);// 在指定位置添加元素,在第5个位置添加2 

aremove(2); // 删除指定位置上的元素             

aremove((Object)3); // 删除指定元素

aclear(); // 清空ArrayList       

Systemoutprintln("ArrayList contains 5 is: " + acontains(5));// 判断arrayList是否包含5     

Systemoutprintln("ArrayList is empty: " + arrayListisEmpty()); // 判断ArrayList是否为空 

2、toArray用法

有时候,当我们调用ArrayList中的 toArray(),可能遇到过抛出javalangClassCastException异常的情况,

这是由于toArray() 返回的是 Object[] 数组,将 Object[] 转换为其它类型(如,将Object[]转换为的Integer[])则会抛出javalangClassCastException异常,因为Java不支持向下转型。

所以一般更常用的是使用另外一种方法进行使用:

<T> T[] toArray(T[] a)

调用toArray(T[] a)返回T[]可通以下方式进行实现:

// toArray用法

// 第一种方式(最常用)

Integer[] integer = arrayListtoArray(new Integer[0]);

// 第二种方式(容易理解)

Integer[] integer1 = new Integer[arrayListsize()];

arrayListtoArray(integer1);

// 抛出异常,java不支持向下转型

//Integer[] integer2 = new Integer[arrayListsize()];

//integer2 = arrayListtoArray();

ArrayList<Integer> a = new  ArrayList<Integer>();

实例:

import javautilArrayList;

import javautilIterator;

public class ArrayListDemo {

public static void main(String[] srgs){

ArrayList<Integer> arrayList = new ArrayList<Integer>();

Systemoutprintf("Before add:arrayListsize() = %d\n",arrayListsize());

arrayListadd(1);

arrayListadd(3);

arrayListadd(5);

arrayListadd(7);

arrayListadd(9);

Systemoutprintf("After add:arrayListsize() = %d\n",arrayListsize());

Systemoutprintln("Printing elements of arrayList");

// 三种遍历方式打印元素

// 第一种:通过迭代器遍历

Systemoutprint("通过迭代器遍历:");

Iterator<Integer> it = arrayListiterator();

while(ithasNext()){

Systemoutprint(itnext() + " ");

}

Systemoutprintln();

// 第二种:通过索引值遍历

Systemoutprint("通过索引值遍历:");

for(int i = 0; i < arrayListsize(); i++){

Systemoutprint(arrayListget(i) + " ");

}

Systemoutprintln();

// 第三种:for循环遍历

Systemoutprint("for循环遍历:");

for(Integer number : arrayList){

Systemoutprint(number + " ");

}

// toArray用法

// 第一种方式(最常用)

Integer[] integer = arrayListtoArray(new Integer[0]);

// 第二种方式(容易理解)

Integer[] integer1 = new Integer[arrayListsize()];

arrayListtoArray(integer1);

// 抛出异常,java不支持向下转型

//Integer[] integer2 = new Integer[arrayListsize()];

//integer2 = arrayListtoArray();

Systemoutprintln();

// 在指定位置添加元素

arrayListadd(2,2);

// 删除指定位置上的元素

arrayListremove(2); 

// 删除指定元素

arrayListremove((Object)3);

// 判断arrayList是否包含5

Systemoutprintln("ArrayList contains 5 is: " + arrayListcontains(5));

// 清空ArrayList

arrayListclear();

// 判断ArrayList是否为空

Systemoutprintln("ArrayList is empty: " + arrayListisEmpty());

}

}

/

Before add:arrayListsize() = 0

After add:arrayListsize() = 5

Printing elements of arrayList

通过迭代器遍历:1 3 5 7 9

通过索引值遍历:1 3 5 7 9

for循环遍历:1 3 5 7 9

ArrayList contains 5 is: true

ArrayList is empty: true

/

List<String> strs=new ArrayList<String>();
strsadd("a");
strsadd("b");
strsadd("c");
Systemoutprintln(strstoString());
for(int i=0;i<strssize();i++ ){
if(strsget(i)equals("b")){
strsremove(i);
strsadd(i,"4");
}
}
Systemoutprintln(strstoString());
不知道你说的具体是哪种,但是这种是可以实现的。

import
copyList2=copydeepcopy(List1)这样赋值,List2初始值和List1一样,因为是深度复制List1中的元素,所有深层元素都引用的是不同的对象,List1的任何改变不会影响List2

1、首先你要确定数组的类型(比如 整型数组、字符串数组、字节数组等类型)
2、其次你要能访问到数组元素,即:明确访问数组 元素的方法。
3、按照1和2中确认的类型和方法来对数组元素的值进行修改
例如:
int[] a={1,2,3,4,5,6}; //该数组类型为一维的整型数组,数组元素的类型都为整数类型
针对 该数组,访问该一维数组可以通过下标的方法:a[i] ,i为数组元素的下标(i=0 表示数组的第1个元素,依次类推),如果要修改该数组的第3元素的值为 30 ,那么i=2,可以通过 a[2]=30; 这个语句实现。

用listset(index, element)。

具体 *** 作步骤如下:

import javautil;

class Demo

{

public static void main(String[] args)

List<String> list=new ArrayList<String>()

listadd("张三");

listadd("李四");

listadd("王五");

listadd("赵六");

listadd("田七");

//打印原来集合

Systemoutprintln("原集合数据:"+list);

if(listcontains("王五"))//判断集合是否包含某元素           

{                 

指定元素替换列表中指定位置的元素。

}

//打印修改后集合

Systemoutprintln("修改后集合数据:"+list);

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10551775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存