java List 去重(两种方式)

方法一: 通过Iterator 的remove方法

Java代码 

public void testList() {  

 List<Integer> list=new ArrayList<Integer>();  

 list.add(1);
 list.add(2);
 list.add(4);
 list.add(1);
 list.add(2);
 list.add(5);
 list.add(1);
 List<Integer> listTemp= new ArrayList<Integer>();
 Iterator<Integer> it=list.iterator();
 while(it.hasNext()){
  int a=it.next();
  if(listTemp.contains(a)){
   it.remove();
  }
  else{
   listTemp.add(a);
  }
 }
 for(Integer i:list){
  System.out.println(i);
 }
}  

方法二:直接将结果赋值给另一个List

public void testList2() {
    List<Integer> list=new ArrayList<Integer>();
    list.add(1);
    list.add(2);
    list.add(4);
    list.add(1);
    list.add(2);
    list.add(5);
    list.add(1);
    List<Integer> tempList= new ArrayList<Integer>();
    for(Integer i:list){
        if(!tempList.contains(i)){
            tempList.add(i);
        }
    }
    for(Integer i:tempList){  

        System.out.println(i);
    }
}     

打印结果

1
2
4
5 
时间: 2024-08-01 10:46:26

java List 去重(两种方式)的相关文章

一步步分析Java深拷贝的两种方式-clone和序列化

今天遇到一道面试题,询问深拷贝的两种方法.主要就是clone方法和序列化方法.今天就来分析一下这两种方式如何实现深拷贝.如果想跳过解析的朋友,直奔"重点来了!"寻找答案. clone方法 例1:我们不妨建立一个Exam对象 考试类Exam.java文件 public class Exam implements Cloneable { private int examId; private String examName; public Exam() { } public Exam(in

java笔记线程两种方式模拟电影院卖票

1 public class SellTicketDemo { 2 public static void main(String[] args) { 3 // 创建三个线程对象 4 SellTicket st1 = new SellTicket(); 5 SellTicket st2 = new SellTicket(); 6 SellTicket st3 = new SellTicket(); 7 8 // 给线程对象起名字 9 st1.setName("窗口1"); 10 st2.

采用java和数据库两种方式进行加锁

java代码加锁 publicstatic synchronized int generate(StringtableName){Stringsql = "select value from t_table_id where table_name=?";Connectionconn = null;PreparedStatementpstmt = null;ResultSetrs = null;intvalue = 0;try{conn= DbUtil.getConnection();p

Java Thread Synchroize两种方式的优劣

Context: 关于Thread老是看了忘,看了忘记.还是写下来吧.翻译的是orcale官网的锁解释文档地址 锁: 同步机制是围绕内部实体即intrinsic lock(intrinsic固有的.本质的).monitor lock(监控锁).Intrinsic lock在同步上扮演两个角色:1.强制的排他性读取对象的状态(也就是线程访问对象的属性.方法等是互斥的).2保持happens-before relationship来确保变量.方法的可见性. 每个对象都有与其关联的intrinsic

Java 和 数据库两种方式进行加锁

java方式: publicstatic synchronized int generate(StringtableName){ Stringsql = "select value from t_table_id where table_name=?"; Connectionconn = null; PreparedStatementpstmt = null; ResultSetrs = null; intvalue = 0; try{ conn= DbUtil.getConnecti

JAVA连接Oracle两种方式

以前学习.NET连接数据库时,也是做各种的连接配置.而如今在用到java操纵Oracle时,同样是一些的操作.在此总结一下. 1.JDBC_ODBC连接数据库 此方法需要配置ODBC数据源,本机必须有Oracle数据库 1.配置数据源 打开控制面板--管理工具--数据源 2.接下来在代码中连接即可 //使用jdbc_odbc桥接方式连接,需要配置数据源 public static void main(String [] args){ try{ //1.加载驱动 Class.forName("su

java及javascript两种方式获取YYYY-MM-dd HH:mm:ss格式的日期字符串

一.java方式 String leaveTime=""; SimpleDateFormat sDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); Date date=new Date(); leaveTime=sDateFormat.format(date); 二.javascript方式 <script type="text/javascript"> $().ready(

java生成Excel两种方式

方法一,利用第三方jar包:jxl.jar 无论方法一方法二最后最好用转换成流传给前端. 1 public void createExcel(){ 2 try{ 3 //打开文件 4 WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls")); 5 //生成名为"第一页"的工作表,参数0表示这是第一页 6 WritableSheet sheet = workbook.create

java 创建对象的两种方式

一: Object object = new Object(); 二: public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException { //可以通过映射的方式来获取 DemoTest2 myobject = (DemoTest2)Class.forName("DemoTest2").newInstance(); m

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权.因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去.因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态.然后等待消费者消费了商品,然后消费者通知生产者队列有空间了.同样地,当