1、add
ArrayList的add:例子:list.add(“1”);
跟LinkedList一样是在最后面加上add进来的数字。
放在输出语句中的话是输出为true
和false
,不过只知道输出为true
,怎么输出为false
呢?
2、Remove
Index(索引为从0开始)
例子:list.remove(0);
删去 索引指向的元素。然后索引会对应的补齐。(不会出现用了一次0以后0处就没有数据使用了。)
A. 如果输入的索引超过了范围会报错的。
B. remove也可以对数据直接进行删除,只需要输入相应的元素就行了(比如上面有一个list.add(“1”);
list里面有一个1以后。我可以直接用list.remove(“1”);
来直接删去这个1。
C. 在输出语句中使用remove也是会删去相应的元素的。
System.out.println(list.remove(0)); //------A
System.out.println(list.remove("2"))//------B
在这个输出语句中,A是会直接输出remove的元素。而B是如果list里面有2的话就会输出true,否则是false。
import java.util.ArrayList;
public class arrays1_1 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("1");
list.add("4");
list.add("6");
System.out.println(list);//最开始list中有的元素
System.out.println("-----------------------");
list.remove(0);//以索引来remove
System.out.println(list);//remove一次以后输出的数据。
System.out.println("-----------------------");
System.out.println(list.remove(0));
//在输出语句中以索引形式remove看输出是什么
System.out.println(list);
//再看经过在输出语句中remove后是否有元素被删去。
System.out.println("-----------------------");
System.out.println(list.remove("2"));
//再看通过索引来删去,并且由于上面的删去这里是没有2了的,测试为false的时候数据会不会变化。
System.out.println(list);
}
}
输出为:
[1, 2, 1, 4, 6]
-----------------------
[2, 1, 4, 6]
-----------------------
2
[1, 4, 6]
-----------------------
false
[1, 4, 6]
如果有两个一样的数据的话呢我list.remove("___");
会怎么样?
//[1, 2, 1, 4, 6]List中还是这几个数据。
list.remove("1");
System.out.println(list);
输出为:
[2, 1, 4, 6]
所以可以看出remove值的话是从索引小到大来删除的。(可以看成从左到右。)
-
总结:remove,add:总的来说我认为最重要的一点是remove使用会删去元素。add使用也会加上元素。(前提是语句都为true,通过上面的remove可以发现,如果remove为false的话,[1, 4, 6]他是没有变化的。(这里后来又去看了一下add在输出语句中使用后会不会加上那个数字。测试了是会加上的。所以在这里补充。)
-
[1, 2, 1, 4, 6]
下面没有提到的list都以这个为初始的添加部分。
3、size
size用处如其名。
就是看list中总元素个数的。(但是看来直接使用的话,没有什么作用,得放到输出语句中输出才行啊。)
list.size();
System.out.println(list.size());
//这里的list上面为只有add的部分。
输出为:
5
4、get
get:获得;得到;取得;
使用时索引从0开始,第二个了。(上一个是remove(在现在写下来来看的话)。)
还是 简简单单测试他的作用:
(我现在就只想到了放到输出语句中和不放到里面两种对比方式。)
//[1, 2, 1, 4, 6]
list.get(0);
System.out.println(list.get(3));
输出为:
4
get的index(就是括号内的数字)如果超过了list中的。会在运行时报错。就是编译会通过,然后前面没有问题的也能输出。到了有问题的地方才会报错。
//[1, 2, 1, 4, 6]
list.get(0);
System.out.println(list.get(3));
System.out.println(list.get(9));
输出为:
4
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 9, Size: 5
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)
at com.ArraysList1_1.arrays1_1.main(arrays1_1.java:41)
5、set(把你想要的地方替换成新的,所谓喜新厌旧?)
注意:索引也是从0开始的哦。
形式为:list.set(index,element);(前面的为索引,你想替换的,后面的element为你替换成的新数据。)
//[1, 2, 1, 4, 6]
list.set(0,"2");
System.out.println(list);//把索引为0的给替换成2
System.out.println(list.set(4,"10"));//我想把索引为4的给替换成10,但是看在输出语句中是否能实现?
System.out.println(list);
输出为:
[2, 2, 1, 4, 6]
6
[2, 2, 1, 4, 10]
为什么在输出语句中的set和get是一样的,都输出了我想要的索引位置的数据。不过区别在于看出来了吧。set还是替换成功了的。get就真的只是拿而已,他什么都不变,只是拿而已。(get他真的,我哭死。)
6、clear
clear拜托了!把list中所有的元素都清除吧!
//[1, 2, 1, 4, 6]
list.clear();
System.out.println(list);
输出为:
[]
干净多了。
clear能放在输出语句中使用嘛。(这里能不能放在输出语句中实现是不是跟他原码中的返回类型有关呢?)
System.out.println(list.clear());
emmmmm.报错了。
报错为:java: 此处不允许使用 ‘空’ 类型
看来是不能放在输出语句中使用clear了。
7、contains
包含! 判断list中是否有这一个元素。没有则返回false,有就是true了。
contains 支持的类型好多啊。
//[1, 2, 1, 4, 6]
list.contains(1); -------1
System.out.println(list.contains(12.21)); -------2
System.out.println(list.contains("abx")); -------3
System.out.println(list.contains(1)); -------4
System.out.println(list.contains("1")); -------5
看上面的这个,你觉得输出true的是哪一个?
A. 1 B.2 C.3 D.钝角 E.4 F.5
输出为:
false
false
false
true
//对第一句 ---1 根本就没有输出。
8、isEmpty
这个是跟contains唱反调是吧。 isEmpty
:列表中不包含元素,就返回true ,是true哦。
//[1, 2, 1, 4, 6]
list.isEmpty();
System.out.println(list.isEmpty());
这个isEmpty还不能在括号里面填写数据是吧。
输出为:
false
//(看来不在输出语句里面是什么都没有发生)
所以这里就可以总结:如果列表list里面有元素,那么isEmpty就会输出false。
那我clear
以后再isEmpty
不就不管怎么样都输出true
了。
9、add
没想到吧,还有一个add。前面的那个是只能在尾部加入元素。这个就不一样了。这个add比较厉害,能在我想要的位置来加入元素。
//[1, 2, 1, 4, 6]
list.add(0,"2");
System.out.println(list);
输出为:
[2, 1, 2, 1, 4, 6]
看到了吗,知道我要说什么了吧。哼哼。这个add他索引也是从0开始的哦(yeah,第三个了。没数错吧。。)
System.out.println(list.add(0,"10"));
知道这句执行语句的请举手!
3,2,1…
好了。
其实这一句是会报错的。(哈哈,经典自娱自乐。)
报错为: java: 此处不允许使用 ‘空’ 类型 (看来是跟clear同类型的报错呢。)
总结:
-
1、 索引从0开始的不用我说了吧。remove ,get ,set ,add(index ,element)上文介绍的一共有4种哦,看来我上面还是数错了。。。。
-
2、不能放到System中输出的有,快快快,我要听到你们的回答! 是clear,还有什么? element(这是LinkedList里面的) ? 不不不。在这里是 clear 和 add(index ,element)
-
3、放在输出语句中,对列表没有影响的是:get 。(这个总结不太好说。)
总之,我的意思是:get用它就真的不会对你的数据有什么影响。其他的即使是放在输出语句中,也会改变列表中的元素的。(因为我一开始以为不会有变化,所以怕自己忘记这一点。就放到总结里了。嗯。)