JAVA笔记11 list集合的学习

it2022-05-05  130

1.list集合中方法的介绍

//集合:作为一种容器,比数组灵活 //数组和集合的区别 //数组的长度是固定的,集合的长度是可变的 //数组既能存储基本数据类型,又能存储引用数据类型,集合只能存储引用数据类型 //数组存储同一种数据类型,集合可以存储多种数据类型 //Collection list set //List------>Arraylist vector LinkedList //List 元素有序(存取元素顺序一致),允许重复元素 List list = new Arraylist(); list.add("li"); list.add("wang"); list.add("zhang"); list.remove(0); //特有方法,根据索引移除元素 object o = list.get(1); object o1 = list.set(1,"liu"); System.out.println(list); List list = new Arraylist(); list.add(1); list.add(2); list.add(300); list.remove(1); list.remove(Integer.valueof(300)); //区分不出来,索引和元素,手动包装一下,就可区分出来 List list = new Arraylist(); list.add("li"); list.add("wang"); list.add("zhang"); for(int i = 0;i<list.size();i++){ object q = list.get(i); System.out.println(list); } List list = new Arraylist(); list.add("li"); list.add("wang"); list.add("zhang"); ListIterator listIterator = list.listIterator(); while (listIterator.hasNext()){ Object obj = listIterator.next(); String str= (String) obj; if(str.equals("world")){ list.remove("Java"); list.add("JavaEE");//当我们使用迭代器,遍历集合元素时,我们的迭代器事先已经知晓,集合中的元素个数,你突然在迭代途中,想要增加或删除,一个元素,那么就会打乱,原来集合中的元素的顺序,那么迭代器也就无所适从了。就会抛出一个并发修改异常。 //解决方式1:我们使用迭代器进行遍历,迭代途中如果要添加元素和删除元素,可以使用迭代器的添加删除元素的方法 //listIterator.add("JavaEE"); //listIterator.remove();

2.数据结构和算法

//数据结构和算法 //数据结构:一种数据存储的方式。 //常见的数据结构:栈,队列,数组,链表,树,哈希表 //数据结构的特点 //栈:先进后出,后进的先出。弹夹 //队列:先进的先出,后进的后出 出地铁站 //数组:查询快(有索引) 增删慢 //链表:

3.Arraylist,vector与LinkedList

public class MyTest2 { public static void main(String[] args) { //List:数组元素有序,允许元素重复 //List // ArrayList 底层数据结构是 数组,查询快,增删慢。线程不安全,效率高 //Vector: 底层数据结构是 数组,查询快,增删慢,线程安全,效率低 // LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全效率高 //我选哪种容器,看需要选择 } }
Arraylist
ArrayList list = new ArrayList(); list.add(100); list.add(200); list.add(300); list.add(30); list.add(10); list.add(109); list.add(30); int i = list.indexOf(30); System.out.println(i); int i1 = list.lastIndexOf(30); System.out.println(i1); List list1 = list.subList(0,2);//根据起始索引与终值索引截取到新的集合中 0bject clone = list.clone();//克隆一个集合 //排序集合中的元素 //Comparator 比较器 list.sort(new Comparator() { @Override public int compare(Object a, Object b) { Integer aa= (Integer) a; Integer bb= (Integer) b; return bb-aa; } }); System.out.println(list); } }

Vector

//void addElement (E obj) //将指定的组件添加到此向量的末尾,将其大小增加 1。 //E elementAt ( int index) //返回指定索引处的组件。 //Enumeration<E> elements () //返回此向量的组件的枚举。 // //E firstElement () //返回此向量的第一个组件(位于索引 0)处的项)。 //E lastElement () //返回此向量的最后一个组件。 //void removeAllElements () //从此向量中移除全部组件,并将其大小设置为零。 //boolean removeElement (Object obj) //从此向量中移除变量的第一个(索引最小的)匹配项。 //void removeElementAt ( int index) //删除指定索引处的组件。

LinkedList

public class MyList { LinkedList linkedList=null; public MyList() { linkedList = new LinkedList(); } //添加元素 public void addEle(String ele) { // ccc bbb aaa linkedList.addFirst(ele); } public Object getEle() { Object pop = linkedList.pop(); //你把取的元素再加回去 linkedList.addLast(pop); return pop; } }

4.泛型

public class MyTest { public static void main(String[] args) { //泛型机制:JDK1.5之后引入的一个概念 //把类型明确工作,推迟到创建对象,或调用方法时,才去明确的一种机制。 //泛型的语法:<数据类型,数据类型> //泛型可以加在 接口上,类型,方法上 //泛型的好处:1.避免了向下转型,2.将问题提前到了编译期 //泛型的特点:泛型只在编译期有效,在运行期就擦除了。 //泛型可以限定,我这个集合中存储什么样的引用数据类型

5.新式for循环

//新式for循环遍历数组 //1,明确容器中的元素是什么数据类型 //2.容器的名字 // for(容器中的元素的数据类型 当前遍历的元素名 : 容器名)

6 补充

public class MyTest { public static void main(String args) { int[] arr = {20, 40, 50, 60}; //System.out.println(arr); //System.out.println(Arrays.toString(arr)); ArrayList<Integer> list = new ArrayList<Integer>(); list.add(1004); list.add(1000); list.add(1002); list.add(10026); list.add(10077); list.add(10089); list.add(10000); list.add(100444); //把集合转成数组 //创建一个数组,遍历集合取出元素放到数组里面 //Integer[] arrins=new Integer[list.size()]; // Object[] objects = list.toArray(); int[] arr2 = {20, 40, 50, 60}; //把数组转换成集合 List<int[]> ints = Arrays.asList(arr2); int[] ints1 = ints.get(0);

最新回复(0)