package zhang.com.公共类;
import java.util.ArrayList;
import java.util.List;
public class Person {
String name;
int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public Person(){
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String []args){
Person p1 = new Person("Durant",33);
List<Person> list = new ArrayList<>();
list.add(p1);
System.out.println(list);
p1.setAge(0);
System.out.println(list);
}
}
输出结果:
/**
* ArrayList中的常用方法
*/
public class JArrayList {
public static void main(String []args){
List<Integer> l1=new ArrayList<>();
l1.add(1);
l1.add(2);
l1.add(3);
l1.add(3,4);/** 方法 add() */
l1.add(5);
l1.add(7);
l1.add(5,6);
l1.remove(0); /** 方法 remove() */
// Integer[] integer1 = new Integer[l1.size()];
// l1.toArray(integer1);
//l1.clear(); /** 方法 clear() */
System.out.println(l1.isEmpty()); /** 方法 isEmpty() */
System.out.println("链表的大小:"+l1.size());
for(int i=0;i<l1.size();i++){
System.out.println(l1.get(i));
}
}
}
/**
* 增加:
* add(E e):在链表后添加一个元素; 通用方法
* addFirst(E e):在链表头部插入一个元素; 特有方法
* addLast(E e):在链表尾部添加一个元素; 特有方法
* push(E e):与addFirst方法一致
* offer(E e):在链表尾部插入一个元素 add(int index, E element):在指定位置插入一个元素。
* offerFirst(E e):JDK1.6版本之后,在头部添加; 特有方法 offerLast(E e):JDK1.6版本之后,在尾部添加; 特有方法
*
* 删除:
* remove() :移除链表中第一个元素; 通用方法
* remove(E e):移除指定元素; 通用方法
* removeFirst(E e):删除头,获取元素并删除; 特有方法
* removeLast(E e):删除尾; 特有方法
* pollFirst():删除头; 特有方法
* pollLast():删除尾; 特有方法
* pop():和removeFirst方法一致,删除头。
* poll():查询并移除第一个元素 特有方法
*
* 查:
* get(int index):按照下标获取元素; 通用方法
* getFirst():获取第一个元素; 特有方法
* getLast():获取最后一个元素; 特有方法
* peek():获取第一个元素,但是不移除; 特有方法
* peekFirst():获取第一个元素,但是不移除;
* peekLast():获取最后一个元素,但是不移除;
* pollFirst():查询并删除头; 特有方法
* pollLast():删除尾; 特有方法
* poll():查询并移除第一个元素 特有方法
*/
public class a1 {
public static void main(String []args){
LinkedList l1 =new LinkedList();
l1.add(1);/** add(E e):在链表后添加一个元素; 通用方法 */
l1.add(2);
LinkedList l2=new LinkedList();
l2.add(l1.get(0));
l2.add(l1.get(1));
for(int i=0;i<l2.size();i++){
System.out.println(l2.get(i));
}
}
}
package zhang.com.NoteBooks.List.MyList;
import java.util.ArrayList;
import java.util.List;
public class test {
public static void main(String []args){
List<List<Integer>> L = new ArrayList<>();
List<Integer> l1= new ArrayList();
l1.add(1);
l1.add(2);
l1.add(3);
l1.add(4);
L.add(l1);
l1.remove(0);
System.out.println("链表的大小:"+l1.size());
for(Integer e:l1) System.out.print(e+ " ");
System.out.println();
for(List l : L){
System.out.println(l.size());
for(int i=0;i<l.size();i++){
System.out.print(l.get(i) + " ");
}
}
}
}
往l集合中添加4个元素后,然后再将这个集合添加到另L中去,然后将四个集合中的元素移除掉一个,但是,L中的集合元素也随之而改变了。
在这个情况下,往集合L中添加4个元素后,再将这个集合添加到另一个集合L2中,然后移除其中一个集合的元素时,L中的集合元素也会随之改变的原因是因为集合是可变对象,而变量存储的是对象的引用。当我们将一个集合添加到另一个集合中时,实际上是将集合的引用添加到了另一个集合中。因此,当我们修改其中一个集合时,另一个集合中引用的集合也会受到影响。
这是因为集合是通过引用传递的,而不是通过值传递。所以当我们修改一个集合时,其他引用该集合的地方也会受到影响。