//List移除
public void listRemove(){
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(1);
/**
* Remove有两种形式,一种是按Index删除,一种是按list中的值删除
* 按Index删除时,入参是int类型
* 按List值删除时,入参是复合类型
*/
//在Remove(Object o)时,删除的是第一次出现的值
Integer e = 1;
list.remove(e);
System.out.println(list); //[2, 1]
int index = 0;
list.remove(index);
System.out.println(list); //[1]
list.add(2);
list.add(2);
list.add(2);
List<Integer> l1 = new ArrayList<>();
l1.add(2);
//removeAll会把list中包含了l1元素的元素全删除
list.removeAll(l1);
System.out.println(list); //[1]
}
/*
* 循环删除
*/
public void loopRemoveList(){
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("a");
list.add("a");
for(int i = 0; i < list.size(); i++){
if(list.get(i).equals("a")){
list.remove(i);
}
}
/*
* 因为在循环中用了 list.size()来做为循环退出判断条件,而 list在
* remove 掉元素后,其 list.size()的值就会发生变化,导致了数组没有循环完全就
* 退出了。
*/
System.out.println(list);//[b,a]
}
/*
* 使用迭代器删除
*/
public void iteraorRemoveList(){
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("a");
list.add("a");
/**
* Iterator 是 Java 迭代器最简单的实现,为 List 设计的 ListIterator 具有
更多的功能,它可以从两个方向遍历 List,也可以从 List 中插入和删除元素。
*/
Iterator<String> it = list.iterator();
while(it.hasNext()){
String next = it.next();
if(next.equals("a")){
it.remove();
}
}
System.out.println(list); //[b]
ListIterator<String> iterator = list.listIterator();
while(iterator.hasNext()){
String next = iterator.next();
if(next.equals("b")){
iterator.add("c");
}
}
System.out.println(list); //[b, c]
}
/*
* 数组转集合
*/
public void arrayToArrayList(){
int[] i = {2,3,4,5};
List<int[]> list1 = Arrays.asList(i);
System.out.println(list1); //[[I@15db9742]
/*
* 因为 list 中只能接复合数据类型,而 int 是基本数据类型,
* 所以,转换不了
*/
Integer[] j = {1,4,3,2};
List<Integer> list2 = Arrays.asList(j);
System.out.println(list2); //[1, 4, 3, 2]
/*
* Arrays.asList()的返回值还不是
* 一个真正的list,只是一个特殊的数组,于是,要经过再一次的转换
*/
Integer[] k = new Integer[]{1,2,3};
List<Integer> list3 = Arrays.asList(k);
// for(int l=0;l<5;l++){
// list3.add(l); //异常java.lang.UnsupportedOperationException
// }
//将数组转换为ArrayList的正确方式
List<Integer> list = new ArrayList<>(list3);
for(int p=0;p<3;p++){
list.add(p);
}
System.out.println(list); //[1, 2, 3, 0, 1, 2]
}
//清空List
public void clearList(){
List<String> list = new ArrayList<>();
list.add("a");
boolean b1 = list.isEmpty();
System.out.println("list是否为空:"+b1); //false
list.clear(); //清空List
System.out.println("list是否为空:"+list.isEmpty()); //true
}
//List排序
public void sortList(){
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
Collections.sort(list);
System.out.println(list); //[1, 2, 3]
}
//复杂排序
public void sortListComplex(){
List<List<Integer>> list = new ArrayList<>();
List<Integer> l1 = new ArrayList<>();
l1.add(3);
List<Integer> l2 = new ArrayList<>();
l2.add(1);
l2.add(3);
List<Integer> l3 = new ArrayList<>();
l3.add(2);
list.add(l1);
list.add(l2);
list.add(l3);
Collections.sort(list,new Comparator<List<Integer>>() {
@Override
public int compare(List<Integer> o1, List<Integer> o2) {
if(o1.get(0) > o2.get(0)){//按List<Integer>的第一个值进行降序排
return -1;
}else if(o1.get(0) < o2.get(0)){
return 1;
}
return 0;
}
});
System.out.println(list); //[[3], [2], [1, 3]]
}
//List循环
public void loopList(){
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
for(Integer i : list){
System.out.println(i);
}
}
//List常用方法
public void test2(){
List<String> list = new ArrayList<>();
list.add("a");
int len = list.size();
System.out.println("集合长度为"+len); // 集合长度为1
String str = list.get(0); //获取第一个元素
System.out.println("集合的第一个元素"+str); // a
list.set(0,"b"); //替换Index为0的值 类似字符串中的替换
boolean b = list.contains("b");
System.out.println("list中是否包含b元素"+b); //list中是否包含b元素true
List<String> l1 = new ArrayList<>();
l1.add("c");
list.addAll(l1); //合并list
System.out.println(list); //[b, c]
list.retainAll(l1);
System.out.println("集合中的交集元素有"+list);
list.add("d");
list.add("e");
//从集合中获取一个list 从0开始到2 不包含2
List<String> subList = list.subList(0,2);
System.out.println(subList); //[c, d]
}
public void test1(){
int[] i = {2,3,6};
for(int a = 0; a < i.length; a++){
int f = i[a];
i[a] = f+1; //修改值
}
//修改以后的值为3、4、7
for(int j = 0;j < i.length; j++){
System.out.println(i[j]);
}
}
关于List集合
最新推荐文章于 2024-02-23 00:22:00 发布