• 集合


    集合共有的方法:add,isEmpty,Iterator,remove

    • Collection(不唯一,无序) 
    1. List(不唯一,有序):ArrayList,LinkedList
    2. Set(唯一,无序):HashSet,TreeSet
    • Map(键值对象)(没有Iterator): HashMap,TreeMap

    List常用办法get,set,Listiterator

    同步:同斥,上锁
    vector(与ArrayList同级)

    异步
    ArrayList 动态
    连续空间,遍历,随机访问元素
    长度可变的数组

    LinkedList 链表
    插入,删除元素
    增加或删除首尾对象

      1 范例1:
      2 /**
      3  * 把1到100中所有包含4的数剔除,并打印剩下的数
      4  */
      5 import java.util.*;
      6 public class DivisibleBy4 {
      7     public static void main(String[] args) {
      8         List nums = new ArrayList();
      9         List nums1 = new ArrayList();
     10         //存数据
     11         for (int i = 1; i <= 100; i++) {
     12             nums.add(i);
     13         }
     14         
     15         !!!!★★★★★对数据进行操作,把数据放在另一个集合中★★★★★
     16         !!!!★★★★★对某对象进行foreach操作,不能对该对象进行remove,add操作★★★★★
     17         for (int i = 0; i < nums.size(); i++) {
     18             if (nums.get(i).toString().contains("4")) {
     19                 //【★★★如果add为false,那么添加不成功!!!!★★★】
     20                 nums1.add(nums.get(i));
     21             }
     22         }
     23         
     24         /*方法一*/
     25         for (int i = 0; i < nums1.size(); i++) {
     26             nums.remove(nums1.get(i));
     27         }
     28         
     29         /*方法二*/
     30         //【★★★如果remove为false,那么删除不成功!!!!★★★】
     31         nums.removeAll(nums1);
     32         System.out.println(nums);
     33 }
     34 
     35 范例2:
     36 /**
     37  * 把车牌号中所有包含8的剔除,并打印剩下的数
     38  */
     39 import java.util.*;
     40 public class PlateNum {        
     41         List<String> No = new ArrayList<String>();
     42         List<String> No1 = new ArrayList<String>();
     43         Random rd = new Random();
     44         for (int i = 0; i < 10; i++) {
     45             //随机一些车牌
     46             String carNo = "川A" + (rd.nextInt(100000) + 1);
     47             No.add(carNo);
     48         }
     49         System.out.println(No);
     50         
     51         /**
     52          * 第一种方法
     53          */
     54         for (int i = 0; i < No.size(); i++) {
     55             if (No.get(i).toString().contains("8")) {
     56                 No1.add(No.get(i));
     57             }
     58         }
     59         //【★★★如果remove为false,那么删除不成功!!!!★★★】
     60         No.removeAll(No1);
     61         System.out.println(No);
     62         
     63         /**
     64          * 第二种方法
     65          */
     66         for (int i = 0; i < No.size(); i++) {
     67             char[] ch = No.get(i).toString().toCharArray();
     68             for (int j = 2; j < ch.length; j++) {
     69                 if (ch[j] == '8') {
     70                     No.remove(i);
     71                     break;
     72                 }
     73             }
     74         }
     75         System.out.println(No);
     76     }
     77 }
     78 
     79 ArrayList:add,remove,toString,subString,foreach,随机名字
     80 范例1:
     81 /**
     82  * 100个姓名存在集合中,把姓王的找出来
     83  */
     84 public class TestDemo2 {
     85     public static void main(String[] args) {
     86         List al = new ArrayList();
     87         //构建姓的数组
     88         String[] xin = new String[]{"丁","王","徐","汤","独孤","李"};
     89         String[] ming = new String[]{"强","求败","建国","援朝","翠花","狗蛋","嫚","凯","程琳"};
     90         
     91         /*存数据*/
     92         Random rd = new Random();
     93         for (int i = 0; i < 100; i++) {
     94             al.add(xin[rd.nextInt(xin.length)] + ming[rd.nextInt(ming.length)]);
     95         }
     96         //测试
     97         System.out.println(al);
     98         
     99         /*取数据*/
    100         //姓王的名字剔除
    101         /*第一种方法*/
    102         System.out.println("***************************************************");
    103         List al2 = new ArrayList();
    104         for (int i = 0;i < al.size();i++) {
    105             /*charAt,首字母*/
    106 //            if (al.get(i).toString().charAt(0)=='王') {
    107             /*subString,截取*/
    108             if (al.get(i).toString().substring(0, 1).equals("王")) {
    109                 al2.add(al.get(i));
    110             }
    111         }
    112         al.removeAll(al2);
    113         System.out.println(al);
    114         
    115         /*第二种方法*/
    116         List al2 = new ArrayList();
    117         //增强型for循环,可以删除对象。
    118         ★★★对某对象进行foreach操作,不能对该对象进行remove,add操作,分两步★★★
    119         for (Object o : al) {
    120             if (o.toString().substring(0,1).equals("王")) {
    121                 al2.add(o);
    122             }
    123         }
    124         al.removeAll(al2);
    125         System.out.println(al);
    126     }
    127 }
    128 
    129 范例2:
    130 /**
    131  * 1.把1到100中所有被3整除的数放在集合中
    132  * 2.求这些数字的和
    133  */
    134 public class TestDemo {
    135     public static void main(String[] args) {
    136         ArrayList al = new ArrayList();
    137         int sum = 0;
    138         /**
    139          * 存数据
    140          */
    141         for (int i = 1; i <= 100; i++) {
    142             if (i % 3 == 0) {
    143                 al.add(i);
    144             }
    145         }
    146         System.out.println(al);
    147         
    148         /**
    149          * 求和
    150          */
    151         for (int i = 0; i < al.size(); i++) {
    152             sum += (Integer)al.get(i);
    153         }
    154         System.out.println(sum);
    155     }
    156 }
    157 
    158 范例3:
    159 /**
    160  * 剔除王姓和年龄小于20的学员
    161  */
    162 import java.util.Random;
    163 public class Student {
    164     private String name;
    165     private int age;
    166     public static final String[] xin = new String[]{"丁","王","徐","汤","独孤","李"};
    167     public static final String[] ming = new String[]{"强","求败","建国","援朝","翠花","狗蛋","嫚","凯","程琳"};
    168     
    169     public Student() {
    170         //随机姓名和年龄
    171         Random rd = new Random();
    172         this.name = xin[rd.nextInt(xin.length)] + ming[rd.nextInt(ming.length)];
    173         this.age = rd.nextInt(20) + 10;
    174     }
    175     ★★集合中,toString一定要重写★★
    176     /*toString本身是【对象@hashcode码】*/
    177     @Override
    178     public String toString() {
    179         return "Student [name=" + name + ", age=" + age + "]";
    180     }
    181     
    182     public String getName() {
    183         return name;
    184     }
    185     public void setName(String name) {
    186         this.name = name;
    187     }
    188     public int getAge() {
    189         return age;
    190     }
    191     public void setAge(int age) {
    192         this.age = age;
    193     }
    194 }
    195 
    196 【import有先后次序】
    197 import java.util.*;
    198 public class TestDemo3 {
    199     public static void main(String[] args) {
    200         List<Student> stuArr = new ArrayList<Student>();
    201         for (int i = 0; i < 10; i++) {
    202             stuArr.add(new Student());
    203         }
    204         System.out.println(stuArr);
    205         
    206         System.out.println("**********************************");
    207         ★★★对某对象进行foreach操作,不能对该对象进行remove,add操作,分两步★★★
    208         List<Student> delStu = new ArrayList<Student>();
    209         try {
    210             /*方法1*/
    211             for (Student student : stuArr) {
    212                 if ("王".equals(student.getName().substring(0, 1)) || student.getAge()>= 20) {
    213                     delStu.add(student);
    214                 }
    215             }
    216             stuArr.removeAll(delStu);
    217             System.out.println(stuArr);
    218             
    219         } catch (Exception e) {
    220             System.out.println("删除有误");
    221             e.printStackTrace();
    222         }
    223     }
    224 }
    225 
    226 -----------------------Set----------------------
    227 set转换成ArrayList
    228 用到对象,就要重写hashCode和equals方法,实现compareTo接口
    229 1、HashSet
    230 范例:
    231 具体类
    232 Collection(没有对象):对集合进行排序,遍历
    233                         shuffle 打乱顺序
    234 public class SetDemo {
    235     public static void main(String[] args) {
    236         Set hs = new HashSet();
    237         Random rd = new Random();
    238         for (int i = 0; i < 100; i++) {
    239             if (hs.size() == 10) {
    240                 break;
    241             }
    242             hs.add(String.valueOf(rd.nextInt(100)));
    243         }
    244         System.out.println(hs);
    245         
    246         ArrayList al = new ArrayList(hs);
    247         /*Collections.sort 升序排列*/
    248         Collections.sort(al);
    249         
    250         /*Collections.shuffle 乱序排列*/
    251         Collections.shuffle(al);
    252         System.out.println(al);
    253     }
    254 }
    255 
    256 public class SetDemo {
    257     public static void main(String[] args) {
    258         Set hs = new HashSet();
    259         hs.add("1");
    260         hs.add("1");
    261         hs.add("2");
    262         hs.add("1");
    263         System.out.println(hs);
    264         /*方法1*/
    265         ArrayList al = new ArrayList(hs);
    266         System.out.println(al.get(0));
    267         /*方法2*/
    268         Object[] hs1 = hs.toArray();
    269         System.out.println(hs1[0]);
    270     }
    271 }
    272 
    273 2、TreeSet 自动升序排列
    274 public class SetDemo {
    275     public static void main(String[] args) {
    276         Set ts = new TreeSet();
    277         ts.add(2);
    278         ts.add(9);
    279         ts.add(9);
    280         ts.add(5);
    281         ts.add(2);
    282         
    283         //字母挨个比
    284         ts.add("apple");
    285         ts.add("hello");
    286         ts.add("very");
    287         ts.add("apple");
    288         ts.add("happy");
    289         
    290         /*Double.doubleToRawLongBits(price) != Double.doubleToRawLongBits(price1) 比double*/
    291         ts.add(2.23);
    292         ts.add(2.236);
    293         ts.add(2.230);
    294         ts.add(2.6);
    295         ts.add(2.6);
    296         
    297         //前面false,后面true
    298         ts.add(true);
    299         ts.add(false);
    300         ts.add(true);
    301         ts.add(true);
    302         ts.add(false);
    303         
    304         System.out.println(ts);
    305     }
    306 }
    307 
    308 -------------------泛型----------------
    309 JDK1.5以后的版本
    310 限制参数类型
    311     
    312 ---------------------Iteator----------------
    313 一看到集合,不需要经过思考,就用Iteator遍历
    314 Collecton继承Iteator,所以Collecton都可以用Iteator
    315 
    316 -----------------------Map-------------------
    317 范例:
    318 public class MapDemo {
    319     public static void main(String[] args) {
    320         //Map接口实现的类HashMap
    321         Map hm = new HashMap();
    322         /**
    323          * K,V都是对象
    324          */
    325         hm.put(1, "张三");
    326         hm.put(2, "张三");
    327         hm.put(3, "张学友");
    328         System.out.println(hm);
    329         
    330         hm.remove(1);
    331         
    332         //根据key得到value
    333         String a = hm.get(2).toString();
    334         System.out.println(a);
    335         //键的集合
    336         Set b = hm.keySet();
    337         System.out.println(b);
    338         //值的集合
    339         Collection c = hm.values();
    340         System.out.println(c);
    341     }
    342 }
    343 
    344 Properties    创建txt文档
    345 ★★★类名不能和关键字,或与系统默认的名重名★★★
    346 范例:
    347 public class PropertiesDemo {
    348     public static void main(String[] args) throws FileNotFoundException, IOException {
    349         Properties pro = new Properties();
    350         pro.setProperty("1", "王寅");
    351         pro.setProperty("2", "李四");
    352         pro.setProperty("3", "张三");
    353         
    354         /*方法1*/
    355 //        pro.store(new FileOutputStream(new File("D:\a.txt")), "存姓名");
    356 
    357         /*方法2*/
    358 //        pro.store(new FileOutputStream(new File("D:" + File.separator +"\c.txt")), "存姓名");
    359         
    360         /*方法3*/
    361         pro.load(new FileInputStream(new File("D:" + File.separator +"\c.txt")));
    362         System.out.println(pro.getProperty("2"));
    363     }
    364 }
  • 相关阅读:
    硬件的效率与一致性
    深入理解SPI机制-服务发现机制
    spring 之7种重要设计模式
    list里放map list 放list
    jvm 三种编译
    几种不同格式的json解析
    Java知识点梳理——集合
    判断2个list中是否有相同的数据(相交)Collections.disjoint
    键相同,比较两个map中的值是否相同
    Map类型数据导出Excel--poi
  • 原文地址:https://www.cnblogs.com/ivy-xu/p/5330561.html
Copyright © 2020-2023  润新知