解决方案 »

  1.   

    确定可以用2个for实现吗 想不到
      

  2.   

       public static void main(String[] args) {
    List<Integer> one = new ArrayList<Integer>();
    one.add(1);
    one.add(2);
    one.add(3);
    one.add(4);
    one.add(5);
    List<Integer> two = new ArrayList<Integer>();
    two.add(2);
    two.add(5);
    two.add(6); for (Integer oneTemp : one) {
        if (!two.contains(oneTemp)) {
    two.add(oneTemp);
        }
    }

    Iterator<Integer> iterator = two.iterator();
    while (iterator.hasNext()) {
        Integer next = iterator.next();
        if (!one.contains(next)) {
    iterator.remove();
        }
    } System.out.println(one);
    System.out.println(two);    }
    不知道是不是楼主的意思
      

  3.   

    arrayA ={1,2,3,4,5}
    arrayB = {2,5,6}for (b in arrayB) {
        int exsit = 0
        for (a in arrayA) {
              if (b == a) {
                    // 存在
                    exsit = 1;
                }
         }
         if (exsit == 0) {
               //如果不存在,加入
                result.add(a);      
          }   
    }b.addAll(result)
      

  4.   

    private void saveLanguagesChange() {
    ArrayList<String> locales = leditor.survey.getLocales();
    for (int i = 0; i < ownLanguageBoxs.getItemCount(); i++) {// 增加多语言
    String language = ownLanguageBoxs.getItemText(i);
    String languageKey = Survey.getLocal(language);
    boolean istExist = false;
    for (int j = 0; j < locales.size(); j++) {
    if (languageKey.equals(locales.get(j))) {
    istExist = true;
    break;
    }
    }
    if (!istExist) {
    leditor.survey.addLocales(languageKey);
    }
    }
    List<String> languageAbbrs = leditor.survey.getLocales();
    for (int i = 0; i < languageAbbrs.size(); i++) {// 移除语言
    String LanguageAbbr = languageAbbrs.get(i);
    boolean isExist = false;
    for (int j = 0; j < ownLanguageBoxs.getItemCount(); j++) {
    String languageKey = Survey.getLocal(ownLanguageBoxs
    .getItemText(j));
    if (LanguageAbbr.equals(languageKey)) {
    isExist = true;
    break;
    }
    }
    if (!isExist) {
    leditor.survey.getLocales().remove(i);
    leditor.survey.deleteLanguage(leditor.survey.getSurveyId(),
    LanguageAbbr, new ProcExecuteCallback() {
    public void finish(ProcData procData) {
    boolean isSuccess = procData.getProcMessage()
    .isSuccess();
    if (!isSuccess) {
    Window.alert("delete language error");
    }
    }
    });
    i--;
    }
    }
    }
    现在我是用4个循环实现的
      

  5.   

    像2L一样 用List.contains吧 至少看起来循环少了
    集合框架基本的api要多熟悉一点
      

  6.   

    list2.addAll(list1);
    list2.retainAll(list1);
      

  7.   


    import java.util.*;public class ListTest {    public static void main(final String[] args) {
            // 集合1{1,2,3,4,5}
            List<Integer> list1 = new ArrayList<Integer>() {
                {
                    add(1);
                    add(2);
                    add(3);
                    add(4);
                    add(5);
                }
            };
            // 集合2{2,5,6}
            List<Integer> list2 = new ArrayList<Integer>() {
                {
                    add(2);
                    add(5);
                    add(6);
                }
            };
            // 把集合2在集合1中没有的,加入集合2,例如 把 集合1中 1,3,4 加入集合2中        
            Set<Integer> set2 = new LinkedHashSet<>();
            set2.addAll(list2);
            set2.addAll(list1);
            list2.clear();
            list2.addAll(set2);        // 把集合2在集合1中没有的,移除, 例如移除 6
            list2.retainAll(list1);
            for (Integer e : list2) {
                System.out.println(e);
            }
        }
    }
    2
    5
    1
    3
    4
      

  8.   


    import java.util.Iterator;
    import java.util.TreeSet;
    public class Main {
    public static void main(String[] args) {
    TreeSet<Integer> t1=new TreeSet<Integer>();
    TreeSet<Integer> t2=new TreeSet<Integer>();
    //初始化数据
    t1.add(1);t1.add(2);t1.add(3);t1.add(4);t1.add(5);
    t2.add(2);t2.add(5);t2.add(6);
    for(int i=0;i<t1.size();i++)
    t2.addAll(t1);
    System.out.println(t2);//打印结果是1,2,3,4,5,6,实现了将第一个集合的元素加到了第二个集合

    Iterator<Integer> it=t2.iterator();
    while(it.hasNext()){
    int value=it.next();
    if(!t1.contains(value))
    it.remove();
    }
    System.out.println(t2);//打印结果是1,2,3,4,5
    }
    }
      

  9.   


    如果可以使用Lambda表达式,#13的代码基本上可以做到一个for都不用
      

  10.   

    import java.util.*;
    public class ListTest2 {    public static void main(String[] args) {
            List<Integer> one = new ArrayList<Integer>();
            one.add(1);
            one.add(2);
            one.add(3);
            one.add(4);
            one.add(5);
            List<Integer> two = new ArrayList<Integer>();
            two.add(2);
            two.add(5);
            two.add(6);        for (Integer oneTemp : one) {
                if (!two.contains(oneTemp)) {
                    two.add(oneTemp);
                }
            }        Iterator<Integer> iterator = two.iterator();
            while (iterator.hasNext()) {
                Integer next = iterator.next();
                if (!one.contains(next)) {
                    iterator.remove();
                }
            }        System.out.println(one);
            System.out.println(two);    }
    }
    [1, 2, 3, 4, 5]
    [2, 5, 1, 3, 4]应该是楼主的意思。
      

  11.   

    看楼主问题有些难点,会点C++,不知可否能有点帮助
    unsigned int a1[] = {1,2,3,4,5};
    unsigned int a2[] = {2,5,6,0,0};  //0为无效成员,无法自增长 unsigned int db1 = 0U;
    unsigned int db2 = 0U;
    register unsigned int sb1 = a1[0];
    register unsigned int sb2 = a2[0]; a2[0] = a1[0] = 0U; for (register unsigned int i = 1U; i < (sizeof(a1) / 4U); ++i)
    {
    sb1 += 1U << (a1[i] - 1U);
    a1[i] = 0U;
    sb2 += 1U << (a2[i] - 1U);
    a2[i] = 0U;
    }
    db1 = sb1 & sb2; 
    db2 = (sb1 | sb2) ^ ((sb1 | sb2) ^ sb1);
    sb1 = sb2 = 0U; for (register unsigned int i = 0U; i < (sizeof(a1) / 4U); ++i)
    {
    if ((db2 >> i & 1U))
    {
    a2[sb1++] = (i + 1U);
    }
    if ((db1 >> i & 1U))
    {
    a1[sb2++] = (i + 1U);
    }
    }
      

  12.   

    如果能确保这每一个列表内的各个元素不重复,则可以利用2个for循环搞定
      

  13.   

    /**
     * 
     */
    package com.fortest;import java.awt.print.Printable;
    import java.util.ArrayList;
    import java.util.List;/**
     * @author Administrator
     *
     */
    public class ForTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<Integer> list1 = new ArrayList<Integer>();
    List<Integer> list2 = new ArrayList<Integer>();
    list1.add(1);
    list1.add(2);
    list1.add(3);
    list1.add(4);
    list1.add(5);
    list2.add(2);
    list2.add(5);
    list2.add(6);

    for(int i = 0;i < list2.size();i ++){
    if(validate(list2.get(i), list1)){
    list2.remove(i);
    }
    }

    System.out.println(list2);
    }

    public static boolean validate(int temp,List<Integer> list){
    boolean flag = true;
    for(Integer test : list){
    if(test.equals(temp)){
    flag = false;
    break;
    }
    }
    return flag;
    }}
      

  14.   


    如果可以使用Lambda表达式,#13的代码基本上可以做到一个for都不用嗯 看你怎么理解一个for都用不到而已 如果你的看法是自己写的代码不用到for循环的话 确实可以
    如果不利用集合框架的这些api 就单纯说数组实现你的需求 至少我是想不到的
      

  15.   

    Integer str1[] = new Integer[]{1,2,3,4,5}
    Integer str2[] = new Integer[]{2,3,4,6}
    str2中最后要和str1里的数据保持一致。
    我需要遍历,标记出哪个需要添加,哪个需要移除,并进行相关数据库操作。
      

  16.   

    这个的话,主要考验楼主对API的熟悉情况以及经验方面:好啦,贴上我写的,不知道是不是最好的,但是应该还算可以的啦
    import java.util.*;public class CollectionTest {
    @SuppressWarnings("serial")
    public static void main(String[] args) {
    // 集合初始化
    // 集合1:1,2,3,4,5
    List<Integer> listOne = new ArrayList<Integer>() {
    {
    add(1);
    add(2);
    add(3);
    add(4);
    add(5);
    }
    };
    // 集合2:2,5,6
    List<Integer> listTwo = new ArrayList<Integer>() {
    {
    add(2);
    add(5);
    add(6);
    }
    };

    // 声明临时集合
    Set<Integer> tempSet = new LinkedHashSet<Integer>();

    // 将已初始化的两个集合加入到临时集合中
    tempSet.addAll(listOne);
    tempSet.addAll(listTwo);

    // 清除临时集合中在集合1中没有的
    tempSet.retainAll(listOne);

    // 输出最终结果
    for (Integer integer : tempSet) {
    System.out.println(integer);
    }
    }
    }最终的结果是:1
    2
    3
    4
    5应该是你要的答案!!!楼主加油
      

  17.   


    这个方法没有去除重复的部分,输出是不对的
    好好去看看API,了解一下交集和并集
      

  18.   


    这个方法没有去除重复的部分,输出是不对的
    好好去看看API,了解一下交集和并集
    好的,谢谢
      

  19.   


    这个方法没有去除重复的部分,输出是不对的
    好好去看看API,了解一下交集和并集
    好的,谢谢

    如果我有什么讲的不对的地方,欢迎指正