/*
List接口是Collection下面的一个子接口。
List接口有以下特点:
1. 有序(有序不是顺序, 怎么存就怎么取) 2. 有索引。 3. 可以存放重复元素。
list接口下面常见的实现类。 ArrayList,LinkedList
*/

List接口是Collection下面的一个子接口。
List接口有以下特点:
1. 有序(有序不是顺序, 怎么存就怎么取) 2. 有索引。 3. 可以存放重复元素。
list接口下面常见的实现类。 ArrayList,LinkedList
*/
public class Demo01list { public static void main(String[] args) { List<String> list = new ArrayList<>(); //添加元素 list.add("达芬奇"); list.add("三十奇"); list.add("六合奇"); System.out.println(list);//怎么输入的怎么输出吗,证明有序性 list.add("达芬奇");//证明可重复性 System.out.println(list); list.get(3);//有索引 } }
// List 接口中的方法:
// public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
// (最常用)public E get(int index) :返回集合中指定位置的元素。
// public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
// public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素
// */
// public class demo01_list.Demo02ListMethod {
// public static void main(String[] args) {
// method4();
// }
//
// //public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素
// //参数index: 表示要替换这个位置的元素
// //参数element: 表示使用这个元素进行替换
// //返回值: 是被替换掉的元素。
public class Demo02ListMethod { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("大米米"); list.add("小米米"); list.add("非洲米米"); System.out.println(list); method(list); } public static void method(List<String> list) { list.add(3, "wowowow"); System.out.println(list); String s = list.get(3); System.out.println(s); String r = list.remove(2); System.out.println(r); String n = list.set(2, "非洲大米"); System.out.println(list); System.out.println(n); } }
/* ArrayList 是List接口的一个实现类。 内部是一个数组 因为是一个数组, 所以查询快,增删慢。 */
/* LinkedList是List接口的另一个实现类。 内部是一个双向链表。 特点: 查询慢,增删快。 */
LinkedList中有很多独有的方法,用于对集合的首尾进行操作。 void addFirst(E e): 向集合首个位置添加元素 void addLast(E e): 向集合的尾部添加元素 E getFirst(): 获取首个元素 E getLast(): 获取尾部元素 E removeFirst(): 删除首个元素,并且返回被删除的元素。 E removeLast(): 删除尾部元素,并且返回被删除的元素 void push(E e):压入。 在首个位置添加元素 E pop():弹出,删除第一个元素 */
public class LinkedListMethod { public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("b"); list.add("c"); list.addFirst(","); list.addLast("nn"); System.out.println(list);//,abcnn String s = list.removeFirst(); System.out.println(s);//, String s1 = list.removeLast(); System.out.println(s1);//nn System.out.println(list);//Abc list.push("w"); System.out.println(list);//wAbc String pop = list.pop(); System.out.println(pop);//w } }
/* Set 是Collection下面的另一个子接口。 这个接口有以下的特点: 1. 无序 (存的顺序和取的顺序不一样) 2. 没有索引 (不能根据索引获取元素) 3. 不能存放重复元素。 Set接口常见的实现类: HashSet(最常用), LinkedHashSet */
public class Demo01Set { public static void main(String[] args) { Set<String> set = new HashSet<>(); set.add("冰冰"); set.add("咪咪"); set.add("美美"); set.add("么么"); System.out.println(set);//证明是无序的 // set.get();//没有索引编译错误 //不能存放重复元素 set.add("么么"); set.add("没有两个么么吧"); System.out.println(set); } }
/* HashSet是Set接口下面最常用的实现类。 满足Set接口的所有特点: 1. 无序 2. 无索引 3. 不可重复 对HashSet这个集合进行遍历 遍历方式: 1. 迭代器 2. 增强for */ public class Demo02HashSet { public static void main(String[] args) { HashSet<String> hs = new HashSet<>(); hs.add("13"); hs.add("222"); hs.add("32222"); hs.add("422"); System.out.println(hs); //用迭代器对集合进行遍历 Iterator<String> iterator = hs.iterator();//获取该集合的迭代器 while (iterator.hasNext()) { String s = iterator.next();//获取当前位置元素,光标后移 System.out.print(" " + s + " "); } System.out.println(); for (String t : hs) { System.out.print("" + t + " "); } } }
/* LinkedHashSet 是Set下面的另一个实现类。 内部除了有一个哈希表之外,还有一个链表,这个链表的作用是保证有序。 LinkedHashSet是有序的。 Set接口是无序,但是他不能保证所有的实现类都无序。 */
public class Demo05LinkedHashSet { public static void main(String[] args) { Set<String> set = new LinkedHashSet<>();//创建集合 set.add("李白"); set.add("丽丽"); set.add("小白"); set.add("太白"); set.add("很白"); System.out.println(set);//有序的 for (String s : set) { System.out.println(s); }