////////////////that's mine
import java.util.*;
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
list.add(a);
list.add(b);
list.add(c);
System.out.println("未修改前:");
for(Student s: list){
System.out.println(s);
}
a.setMark(100);
list.set(0, a);
System.out.println("已修改后:");
for(Student s: list){
System.out.println(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 s.getMark() - this.getMark();
} else {
return -1;
}
}
public String toString(){
return name + ": " + mark;
}
}
做法就是上面的。
java中ArrayList用法详解
基本的ArrayList,长于随机访问元素,但是在List中间插入和移除元素时较慢,并且ArrayList的操作不是线程安全的。
一般在单线程中才使用ArrayList,而在多线程中一般使用Vector或者CopyOnWriteArrayList。
1、使用ArrayList 简单的例子:
ArrayList
for(int i=0; i a.add(sc.nextInt()); //为数组增加int型数 } a.remove(0);//删除第一个元素; m=2; a.add(m); //在数组末尾添加 a.add(4,2);// 在指定位置添加元素,在第5个位置添加2 a.remove(2); // 删除指定位置上的元素 a.remove((Object)3); // 删除指定元素 a.clear(); // 清空ArrayList System.out.println("ArrayList contains 5 is: " + a.contains(5));// 判断arrayList是否包含5 System.out.println("ArrayList is empty: " + arrayList.isEmpty()); // 判断ArrayList是否为空 2、toArray用法 有时候,当我们调用ArrayList中的 toArray(),可能遇到过抛出java.lang.ClassCastException异常的情况, 这是由于toArray() 返回的是 Object[] 数组,将 Object[] 转换为其它类型(如,将Object[]转换为的Integer[])则会抛出java.lang.ClassCastException异常,因为Java不支持向下转型。 所以一般更常用的是使用另外一种方法进行使用: 调用toArray(T[] a)返回T[]可通以下方式进行实现: // toArray用法 // 第一种方式(最常用) Integer[] integer = arrayList.toArray(new Integer[0]); // 第二种方式(容易理解) Integer[] integer1 = new Integer[arrayList.size()]; arrayList.toArray(integer1); // 抛出异常,java不支持向下转型 //Integer[] integer2 = new Integer[arrayList.size()]; //integer2 = arrayList.toArray(); ArrayList 实例: import java.util.ArrayList; import java.util.Iterator; public class ArrayListDemo { public static void main(String[] srgs){ ArrayList System.out.printf("Before add:arrayList.size() = %d\n",arrayList.size()); arrayList.add(1); arrayList.add(3); arrayList.add(5); arrayList.add(7); arrayList.add(9); System.out.printf("After add:arrayList.size() = %d\n",arrayList.size()); System.out.println("Printing elements of arrayList"); // 三种遍历方式打印元素 // 第一种:通过迭代器遍历 System.out.print("通过迭代器遍历:"); Iterator while(it.hasNext()){ System.out.print(it.next() + " "); } System.out.println(); // 第二种:通过索引值遍历 System.out.print("通过索引值遍历:"); for(int i = 0; i < arrayList.size(); i++){ System.out.print(arrayList.get(i) + " "); } System.out.println(); // 第三种:for循环遍历 System.out.print("for循环遍历:"); for(Integer number : arrayList){ System.out.print(number + " "); } // toArray用法 // 第一种方式(最常用) Integer[] integer = arrayList.toArray(new Integer[0]); // 第二种方式(容易理解) Integer[] integer1 = new Integer[arrayList.size()]; arrayList.toArray(integer1); // 抛出异常,java不支持向下转型 //Integer[] integer2 = new Integer[arrayList.size()]; //integer2 = arrayList.toArray(); System.out.println(); // 在指定位置添加元素 arrayList.add(2,2); // 删除指定位置上的元素 arrayList.remove(2); // 删除指定元素 arrayList.remove((Object)3); // 判断arrayList是否包含5 System.out.println("ArrayList contains 5 is: " + arrayList.contains(5)); // 清空ArrayList arrayList.clear(); // 判断ArrayList是否为空 System.out.println("ArrayList is empty: " + arrayList.isEmpty()); } } /** Before add:arrayList.size() = 0 After add:arrayList.size() = 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 */
java中使用arraylist修改里面的内容,可以使用set方法,拿到下标修改内容,如下代码:
package com.qiu.lin.he;
import java.util.ArrayList;
import java.util.List;
public class Ceshi {
public static void main(String[] args) {
Listlist = new ArrayList ();
list.add("a");
list.add("b");
list.add("c");
System.out.println("未修改前:");
for (String s : list) {
System.out.println(s);
}
list.set(0, "修改之后的元素");//修改对应的元素
System.out.println("已修改后:");
for (String s : list) {
System.out.println(s);
}
}
}
运行结果如下:
import java.util.ArrayList;
import java.util.List;
public class test1 {
public static void main(String[] args) {
List
list2.add(1);
list2.add(2);
list2.add(3);
list2.add(4);
list2.set(2, 7);
for(int i = 0 ; i < list2.size(); i++){
System.out.println(list2.get(i));
}
}
}
这样就行了
他的API是
set(int index, E element)
用指定元素替换列表中指定位置的元素(可选操作)。
////////////////that's mine
import java.util.*;
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
list.add(a);
list.add(b);
list.add(c);
System.out.println("未修改前:");
for(Student s: list){
System.out.println(s);
}
a.setMark(100);
list.set(0, a);
System.out.println("已修改后:");
for(Student s: list){
System.out.println(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 s.getMark() - this.getMark();
} else {
return -1;
}
}
public String toString(){
return name + ": " + mark;
}
}
不是结了么?