集合
Collection集合
Collection 主要使用的List 和 Set
List有序集合可以有重复
Set无序集合没有重复没有索引
主要使用方法
//添加元素: boolean add(E e)
//移除指定元素 boolen remove(Object o)
//清楚集合所有元素 clear()
//判断集合是否存在指定元素 boolen contains(Object o)
//判断集合是否为空 boolen isEmpty()
//集合的长度 int size()
//创建collection对象
Collection<String> c = new ArrayList<String>();
//添加元素: boolean add(E e)
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c);//[hello, world, java]
//移除 boolen remove(Object o)
c.remove("java");
System.out.println(c);//[hello, world]
//清楚集合所有元素 clear()
//c.clear();
//判断集合是否存在指定元素 boolen contains(Object o)
System.out.println(c.contains("hello"));//true
System.out.println(c.contains("javascript"));//false
//判断集合是否为空 boolen isEmpty()
System.out.println(c.isEmpty());//false
//集合的长度 int size()
System.out.println(c.size());//2
Collection遍历方法
//Iterator<E> iterator(); 返回此集合元素的迭代器,通过集合中的iterator()方法得到
Iterator<String> it =c.iterator();
//next(): 返回迭代中的下一个元素
/* System.out.println(it.next());//hello
System.out.println(it.next());//world
System.out.println(it.next());//java
System.out.println(it.next());//异常 NoSuchElementException:被请求的元素不存在
*/
//hasNext(): boolen 如果迭代具有更多元素,则返回true
// if (it.hasNext()) {
// System.out.println(it.next());//hello
// }
// if (it.hasNext()) {
// System.out.println(it.next());//world
// }
// if (it.hasNext()) {
// System.out.println(it.next());//java
// }
// if (it.hasNext()) {//无元素则返回false
// System.out.println(it.next());
// }
while(it.hasNext()){
System.out.println(it.next());
}
//forEach遍历
c.forEach(System.out::println);
//for循环遍历
for(String s : c){
System.out.println(s);
}
List集合
ArrayList 查找效率高
LinkedList 增删效率高
List 特有的方法:set() get() Collection里面没有
List 特有迭代器 ListIteractor previous()向上遍历 hasprevious()逆向遍历返回boolen
ListIteractor迭代器遍历可以添加元素 Iteractor不可以
//实例化ArrayList
List<String> c = new ArrayList<String>();
ArrayList<String> al=new ArrayList<>();
var list =new ArrayList<>();
//var list1=List.of(1,2,3,"hello","php",new Date());//固定集合不可改变
//list1.add("qqq");//异常
//System.out.println(list1);
//添加元素: boolean add(E e)
c.add("hello");
c.add("world");
c.add("java");
//实例化ArrayList
List<String> c = new ArrayList<String>();
ArrayList<String> al = new ArrayList<>();
var list = new ArrayList<>();
//var list1=List.of(1,2,3,"hello","php",new Date());//固定集合不可改变
//list1.add("qqq");//异常
//System.out.println(list1);
//添加元素: boolean add(E e)
c.add("hello");
c.add("world");
c.add("java");
c.add(1, "javascript");//指定位置插入指定的元素
System.out.println(c);//[hello, javascript, world, java]
// c.add(10,"javas");
// System.out.println(c );//产生异常 超出下标
c.set(1, "java1111");//修改指定位置元素
System.out.println(c);//[hello, java1111, world, java]
System.out.println(c.get(1));//java1111 获取指定位置元素
System.out.println(c.remove(1));//java1111 删除指定索引元素并返回指定元素
//特有的遍历
for (int i = 0; i < c.size(); i++) {
System.out.println(c.get(i));
}
LinkedList
LinkedList 特有的方法:
addFirst(E e) 列表开头插入指定元素 addlast(E a) 指定元素追加到列表末尾
removeFirst() 删除列表第一个元素并返回删除元素 removeLast() 删除列表最后一个元素并返回元素
LinkedList<String> ll = new LinkedList<>();
ll.add("hello");
ll.add("world");
ll.add("java");
//addFirst(E e) 列表开头插入指定元素 addlast(E a) 指定元素追加到列表末尾
ll.addFirst("javascript");
ll.addLast("javase");
System.out.println(ll);//[javascript, hello, world, java, javase]
//removeFirst() 删除列表第一个元素并返回删除元素 removeLast() 删除列表最后一个元素并返回元素
System.out.println(ll.removeFirst());//javascript
System.out.println(ll.removeLast());//javase
System.out.println(ll);//[hello, world, java]
Set
不能普通fori遍历
for(String s : c){
System.out.println(s);
}
List Set 排序
List<String> list = List.of("java", "javascript", "php", "python", "c", "go", "ruby");
list = new ArrayList<String>(list);
System.out.println(list);
//升序 a-z
list.sort(String::compareTo);
System.out.println(list);
//降序 z-a
list.sort(Comparator.reverseOrder());
System.out.println(list);
//按字母个数升序
list.sort(Comparator.comparingInt(String::length));
//按字母个数降序
list.sort((a, b) -> b.length() - a.length());
System.out.println(list);
List<String> listok = new ArrayList<>(list);
List<Integer> list2 = new ArrayList<>(Arrays.asList(10, 1, 0, 9, 8, 3, 25, 18, 60, 33));
System.out.println(list2);
//升序
list2.sort((a, b) -> a - b);
System.out.println(list2);
//降序
list2.sort((a, b) -> b - a);
System.out.println(list2);
Map
Map<Key,Value>
HashMap<> TreeMap
Map<Integer, String> map =new HashMap<>();
map.put(1,"hello");
map.put(3,"java");
map.put(2,"world");
System.out.println(map.get(1));//hello 获得指定键值的元素
System.out.println(map);//{1=hello, 2=world, 3=java}
System.out.println(map.remove(1));//hello 移除指定键值元素并返回元素
System.out.println(map.isEmpty());//false
//遍历
for(int i : map.keySet()){
System.out.println(map.get(i));
}
//遍历
Set<Map.Entry<Integer, String>> sm=map.entrySet();
for(Map.Entry<Integer,String> m : map.entrySet()){
Integer key =m.getKey();
String value=m.getValue();
System.out.println(key+","+value);
}
//遍历
m.forEach((k, v) -> {
System.out.println(k);
System.out.println(v);
});
//读取map中指定的key的值,如果有就返回,如果没有就使用第二个参数为默认值返回
Object lang = map.getOrDefault("k6", "c");
System.out.println(lang);
案例分析
ArrayList<String> al = new ArrayList<>();
String[] color = {"♣", "♦", "♠", "♥" };
String[] nums = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
for (String c : color) {
for (String n : nums) {
al.add(c + n);
}
}
al.add("大王");
al.add("小王");
Collections.shuffle(al);
System.out.println(al);
ArrayList<String> a1 = new ArrayList<>();
ArrayList<String> a2 = new ArrayList<>();
ArrayList<String> a3 = new ArrayList<>();
ArrayList<String> a4 = new ArrayList<>();
for (int i = 0; i < al.size(); i++) {
if (i < al.size() - 3) {
if (i % 3 == 0) {
a1.add(al.get(i));
}
if (i % 3 == 1) {
a2.add(al.get(i));
}
if (i % 3 == 2) {
a3.add(al.get(i));
}
} else {
a4.add(al.get(i));
}
}
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);